Выгрузка 5 миллионов строк в CSV занимает минуты
std::ofstream out("export.csv");
for (const auto& r : rows) { // 5 млн строк
out << r.id << ',' << r.name << ',' << r.amount << std::endl;
}
strace -c показывает около 5 миллионов системных вызовов write. Что изменить в первую очередь?
- Заменить std::endl на '\n'
- Открыть файл в бинарном режиме
- Вызывать out.flush() после каждой строки
- Отключить sync_with_stdio для файла
