Для действительно большого файла, такого как 1 ГБ, wc -l
бывает медленно. У нас есть более быстрый способ подсчета количества новых строк для конкретного файла?
wc
что у вас слишком много накладных расходов, вы можете попробовать реализовать свои собственные foreach byte in file: if byte == '\n': linecount++
. Реализованный в C или ассемблере, я не думаю, что он станет быстрее, за исключением, возможно, пространства ядра в ОСРВ с наивысшим приоритетом (или даже для этого использует прерывание - вы просто не можете ничего сделать с системой). .. хорошо, я отвлекся ;-))
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
посмотреть, как не меняется время между запусками. Для файла размером ~ 280 МБ время идет от 1,7 до 0,2 секунд, но для файла объемом 2 ГБ - 14 секунд оба раза.
/usr/bin/time wc -l <file>
говорит? Какое у вас оборудование? Это быстрее, если вы запускаете команду несколько раз? Нам действительно нужно больше информации;)
0x0A
отсутствия, ввод / вывод, несомненно, является узким местом.