Мне сообщили, что моя библиотека работает медленнее, чем должно быть, порядка 30+ раз слишком медленный анализ определенного файла (текстовый файл, размер 326 кб). Пользователь предположил, что, возможно, я использую std::ifstream
(предположительно вместо FILE
).
Я бы предпочел не слепо переписывать, поэтому я решил сначала проверить здесь, так как мое предположение было бы узким местом в другом месте. Я читаю символ за символом, поэтому я использую только функции get()
, peek()
и tellg()/seekg()
.
Обновление:
Я профилировал и получил сбивающий с толку вывод - gprof, похоже, не думал, что это заняло так много времени. Я переписал программу, чтобы сначала прочитать весь файл в буфер, и он ускорился примерно в 100 раз. Я думаю, что проблема могла быть в tellg()/seekg()
, который занял много времени, но gprof, возможно, не смог этого понять по какой-то причине. В любом случае ifstream
делает не , похоже, для буферизации всего файла, даже для этого размера.