Обычно, если вы беспокоитесь о производительности, лучше использовать кеширование, а не системное. В зависимости от реализации getline()
, это может быть очень медленно. Например, стандартная реализация fread()
использует внутренний кэш объемом 4 КБ, поэтому будет много вызовов ввода-вывода. Поэтому, пожалуйста, реализуйте некоторое кэширование и используйте вашу реализацию getline()
.
Но в данном конкретном случае, я думаю, проблема в другом. При чтении со стандартного жесткого диска вы достигаете скорости 80-100 Мбит / с, и это дает около 10 секунд в лучшем случае для вашего конкретного файла. Логика обработки в вашем случае очень проста, поэтому жесткий диск будет узким местом. Есть две возможные причины этой разницы:
1) Кэширование файла Windows (первый тест в Windows поместил его в кеш, поэтому следующее чтение того же файла из ВМ было из системного кэша)
2) Если файл находится в файловой системе виртуальной машины, а виртуальная машина использовала сжатие для жесткого диска (учитывая, что этот файл является текстовым файлом, он будет сжимаемым), то фактическое количество операций ввода-вывода жесткого диска будет намного меньше.