В настоящее время я пишу программу на С++, которая включает в себя чтение больших текстовых файлов. Каждый из них имеет ~ 400 000 строк, в крайних случаях 4000 или более символов в строке. Просто для тестирования я прочитал один из файлов, используя ifstream и реализацию, предлагаемую cplusplus.com. Это заняло около 60 секунд, что слишком долго. Теперь мне было интересно, есть ли простой способ улучшить скорость чтения?
изменить: Код, который я использую, более или менее таков:
string tmpString;
ifstream txtFile(path);
if(txtFile.is_open())
{
while(txtFile.good())
{
m_numLines++;
getline(txtFile, tmpString);
}
txtFile.close();
}
edit 2: Файл, который я читаю, имеет только 82 МБ. Я в основном сказал, что он может достичь 4000, потому что я думал, что, возможно, необходимо знать, чтобы сделать буферизацию.
edit 3: Спасибо всем за ваши ответы, но кажется, что у меня не так много возможностей для улучшения, учитывая мои проблемы. Мне нужно использовать readline, так как я хочу подсчитать количество строк. Игнорирование ifstream как двоичного файла также не делало чтение быстрее. Я постараюсь распараллелить его как можно больше, что должно работать как минимум.
edit 4: Так что, видимо, есть некоторые вещи, которые я могу. Большое вам спасибо за то, что вы так много времени уделяете этому, я его очень ценю! =)