Делаю небольшую тулзу поиска по логам. Суть в том, чтобы прочитать большой текстовый файл построчно и поискать по каждой строке регэкспом некоторую подстроку.
std::ifstream infile(fname);
while (std::getline(infile, line)) {
// обрабатываем строку
}
Все это дело работает достаточно медленно. Как показывает профилирование - основная часть времени - std::getline, если убрать всю обработку и оставить только чтение файла - время выполнения программы практически не меняется. Если заменить ifstream и std::getline на fopen и fgets - то скорость возрастает примерно в 10 раз. Подскажите, как правильно готовить ifstream, чтобы скорость была сопоставима с fgets.