Для действительно большого файла, такого как 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отсутствия, ввод / вывод, несомненно, является узким местом.