업무 처리에 필요한 스크립트를 만들다가 생긴 궁금증 입니다.
한 파일에 대해 여러번 grep으로 패턴을 찾아야 합니다. 텍스트 파일 크기는 대략
40000~60000라인 정도 입니다. 너무 스크립트가 느려서 bash array에 내용을
저장하여 쓰면 어떨까 해서 다음과 같은 함수를 만들었습니다.
ksh은 배열 크기에 제한이 있어 bash를 이용 해야 했습니다.
loadfile()
{
inputfile=$1
zz=1
while read line
do
inline[$zz]=$line
zz=$((zz+1))
done < $inputfile
}
catfile()
{
for ((i=1;i<${#inline[@]};i++))
do
echo ${inline[$i]}
done
}
본 스크립트 안에서는 loadfile 을 한번만 하고 나머지 grep이 필요할 때는
"catfile | grep ..."을 이용 합니다.
그런데, 왠지 그냥 단순히 grep 등을 이용하는 것보다 3-4배 더
느리네요. 어디서 이렇게 느려지는지 살펴보니 catfile 입니다.
왜 그럴까요?