Преимущество полученного вами алгоритма оценки в том, что он очень быстрый: один stat(2)
вызов, а затем некоторое деление.Это займет одинаковое количество времени и памяти независимо от размера файла.Но это также крайне неправильно для огромного количества входных данных.
Вероятно, лучший способ получить конкретное число - это на самом деле прочитать весь файл в поисках '\n'
символов.Если вы читаете файл большими бинарными блоками (например, 16384 байта или большей степенью двойки) и ищите конкретный интересующий вас байт, он может приблизиться к пропускной способности дискового ввода-вывода.