WC просто читает файл в блоках необработанных байтов (предпочтительно в кратных натурального размера блока базовой файловой системы, в которой находится файл).
Затем он просто просматривает буфер, считая символы конца строки. (Он также подсчитывает пробелы, вкладки, каналы и другие специальные символы, на тот случай, если вам нужна другая информация, кроме вывода -l.)
Чтение с диска является дорогостоящей частью с точки зрения скорости. Сканирование буфера занимает незначительное время по сравнению с этим.
Скажем, у вас 90 миллионов строк, в среднем по 100 символов в строке.
Это около 9 000 000 000 символов или около 860 МБ.
Приличный ПК с диском SATA-3Gb / s сделает это менее чем за 10 секунд. Даже на относительно медленной файловой системе, где одновременно происходит какая-то другая деятельность.
Быстрая машина с некоторой настройкой производительности и оптимизированной файловой системой может сделать это менее чем за 5 секунд, даже не прибегая к SATA-6G и SSD-накопителю.