Исправлена ошибка, связанная с загрузкой большого класса, содержащего тысячи (тысяч) вложенных архивных классов.
Чтобы изменить формат, использование архива потоков
boost::archive::binary_oarchive
boost::archive::binary_iarchive
вместо
boost::archive::text_oarchive
boost::archive::text_iarchive
код для загрузки (двоичный) архив выглядит следующим образом:
std::ifstream ifs("filename", std::ios::binary);
boost::archive::binary_iarchive input_archive(ifs);
Class* p_object;
input_archive >> p_object;
файлов и walltimes для оптимизированной сборки gcc приведенного выше фрагмента кода:
- ASCII: 820MB (100%), 32,2 секунды (100%).
- двоичный: 620MB (76%), 14.7 секунд (46%).
Это твердотельный накопитель без сжатия потока.
Таким образом, выигрыш в скорости больше, чем размер файла, и вы получите дополнительный бонус, используя двоичный код.
Интересная тема. Прочитайте это: http://stackoverflow.com/questions/4558382/boostserialization-high-memory-consumption-during-serialization –