При заполнении вектора на 20 миллионов точек память скачет и всё тормозит
std::vector<Point> points;
for (size_t i = 0; i < reader.count(); ++i) { // count() известен заранее: 20 млн
points.push_back(reader.next());
}
Профиль показывает десятки крупных перевыделений памяти и копирований всего массива, пик потребления памяти заметно выше итогового размера данных. Что добавить?
- points.reserve(reader.count()) до цикла
- points.resize(reader.count()) и push_back
- points.shrink_to_fit() после каждой вставки
- Заменить vector на std::deque с push_front
