Просто для завершения вышеуказанных методов я попробовал вариант с модулем fileinput:
import fileinput as fi
def filecount(fname):
for line in fi.input(fname):
pass
return fi.lineno()
И передал файл 60-миллиметровых строк всем вышеуказанным методам:
mapcount : 6.1331050396
simplecount : 4.588793993
opcount : 4.42918205261
filecount : 43.2780818939
bufcount : 0.170812129974
Меня немного удивляет, что входной файл настолько плох и масштабируется намного хуже, чем все другие методы ...