1GB와 같은 큰 파일의 wc -l
경우 속도가 느려집니다. 특정 파일의 줄 바꿈 수를 계산하는 더 빠른 방법이 있습니까?
wc
오버 헤드가 너무 의심되는 경우 직접 구현하려고 할 수 있습니다 foreach byte in file: if byte == '\n': linecount++
. C 또는 어셈블러에서 구현하면 우선 순위가 가장 높은 RTOS의 커널 공간을 제외하고는 더 빠를 것이라고 생각하지 않습니다 (또는 인터럽트를 사용하더라도 시스템에서 다른 작업을 수행 할 수는 없습니다). .. 좋아, 난 탈선 ;-))
time wc -l some_movie.avi
캐시되지 않은 파일을 빠르게 처리 하여 결과를 얻었습니다 5172672 some_movie.avi -- real 0m57.768s -- user 0m0.255s -- sys 0m0.863s
. 기본적으로 @ thrig을 입증하는 I / O는이 경우 성능을 산산조각냅니다.
time wc -l some_large_file_smaller_than_cache
연속으로 두 번 빠르게 수행하고 두 번째 작업이 얼마나 빠른지 time wc -l some_large_file_larger_than_cache
확인한 다음 실행간에 시간이 어떻게 변하지 않는지 확인하십시오. 여기 ~ 280MB 파일의 경우 시간은 1.7 초에서 0.2 초이지만 2GB 파일의 경우 두 번 모두 14 초입니다.
/usr/bin/time wc -l <file>
말을? 하드웨어는 무엇입니까? 명령을 반복해서 실행하면 더 빠릅니까? 우리는 정말로 더 많은 정보가 필요합니다.)
0x0A
I / O는 병목 현상이 아닙니다.