Для дійсно великого файлу, як 1 Гб, 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, введення / виведення погіршує вашу ефективність у цьому випадку.
time wc -l some_large_file_smaller_than_cache
двічі швидку послідовність і подивіться, наскільки швидка друга операція, потім time wc -l some_large_file_larger_than_cache
і подивіться, як час не змінюється між тирами. Для файлу ~ 280 Мб тут триває від 1,7 секунди до 0,2 секунди, а для 2 ГБ - це 14 секунд обох разів.
/usr/bin/time wc -l <file>
говорить? Що таке обладнання? Це швидше, якщо ви запускаєте команду кілька разів? Нам дійсно потрібна додаткова інформація;)
0x0A
інсес, введення / виведення без сумніву є вузьким місцем.