То, что вы описываете, по сути является «контрольной точкой» в HP C: вы назначаете кусок памяти, который можно быстро восстановить при перезапуске программы, не тратя значительное время на сохранение / загрузку этих данных.
Есть много библиотек или контрольных точек, но я использовал Кен в прошлом для большого эффекта. Эта библиотека создает отображение виртуальной памяти в фиксированном месте памяти вместе с механизмом автоматического захвата этой памяти на диск и ее перезагрузки.
При перезапуске программы вы просто сопоставьте память снова и проверьте, была ли она инициализирована или нет. Таким образом, ваше время запуска сводится практически к нулю (время для отображения в памяти файла и загрузки фрагментов с диска по мере необходимости).
Вы не представили никакого кода, поэтому я не могу дать вам конкретный совет, но вам нужно будет убедиться, что все выделения памяти для дорогостоящей части выполняются внутри памяти, управляемой Ken, например, путем реализации собственного распределителя памяти, поддерживаемого памятью, управляемой Ken, путем передачи настраиваемого распределителя во все структуры данных STL, или просто убедите свою библиотеку управления памятью выделить память в памяти Кена. Пример последнего параметра см. В разделах jemallo c arena.create
и thread.arena
.