루프에서 컨디션 체크할 때 ${#inline[@]}가 매번 새로이 계산될텐데요.
O(n^2)가 되는 것 아닌지? bash internal을 모르니 확실히는 모르겠군요.
bash에서 read line하는 것도 별로 성능이 좋지 않습니다. 여러번 grep을
한다면 어차피 그 파일은 두번째 부터는 page cache에서 나와서 빠를텐데요.
첫번째도 sequential read면 read-ahead 때문에 빨리 읽을테고요.
dd로 해당 파일을 읽어서 /dev/null로 보내보세요. cold할 때 한 번 읽고, 그
다음 반복하면서 타이밍이 어떻게 되나 보시면 과연 input speed가 문제인지
아실 수 있겠죠?
page cache를 모두 drop하시려면 echo 3 > /proc/vm/drop_caches 하시면
됩니다. 그러면 모든게 cold해지겠죠. L2는 다른 큰 데이타 파일 한 번
스캔하면 대부분 날아갈겁니다.
주의: drop cache할 때 옛날 커널 (e.g. RHEL4)은 재수없으면 돌아가실 수도
있습니다. ^^ 적어도 2.6.18이후에는 문제 없었습니다.
주의: drop cache는 리눅스에서만 해당되는 것입니다.