C ++ fstream пишет в файл очень медленно

У меня есть 2D мир в моей игре, состоящий из плиток. Всякий раз, когда я создаю новый мир, я инициализирую массив из 48 миллионов плиток.

short worldGrid[48000000];

Я устанавливаю значение для всех 48 миллионов, а затем записываю эти значения в файл следующим образом:

    std::fstream save("game_save", std::fstream::out);

for (int x = 0; x < 48000000; x++)
{

save << world.worldGrid[x];
save << " ";

}
save.close();

Это 48 миллионов значений, каждое по 2 байта. Итак, 96 миллионов байтов или 96 мегабайт. Моя проблема в том, что этот процесс внутри цикла for занимает всего 2 минуты на моем SSD. Я не чувствую, что для записи данных в этот файл требуется 96 минут и 5 секунд. Если у кого-нибудь есть какой-либо совет, я буду очень признателен.

0

Решение

Попробуйте записать массив сразу, а не по 2 байта за раз.
Что-то вроде:

 save.write(world.worldGrid, sizeof(worldGrid));

Увидеть документы

3

Другие решения


По вопросам рекламы [email protected]