Эмпирическое правило: размер архива boost по отношению к исходному сериализованному объекту?

По причинам, которые я не буду раскрывать, мне нужно выделить пространство фиксированного размера, а затем использовать ускоренную сериализацию для хранения там объекта. Выбор формата архива произвольный, переносимость не имеет значения.

Класс довольно сложен (члены включают в себя фундаментальные типы, массивы, указатели и дочерние классы) и гарантированно будет расти со временем.

Есть ли у кого-нибудь стоящие оценки размеров, которым они доверяют? Пространство важно, но не в цене. Я ищу относительно простые ответы, такие как «2 * (sizeof X) для двоичного файла» или «4 * количество членов + 3 * sizeof (X), если вам нравятся текстовые архивы».

Спасибо


person Rick Berge    schedule 28.06.2010    source источник


Ответы (1)


Нет ответов, так что вот что показали эксперименты.

Из нашего приложения в одном классе было ~190 членов, sizeof(A) = 12704. Это немного меньше фактического общего размера из-за указателей.

Размер binary_oarchive был 13981, а text_oarchive — 21237. Это было для трейтов по умолчанию, а также для архива с полдюжиной зарегистрированных производных типов.

Итак, я собираюсь использовать 2*sizeof(A) в качестве верхней границы для текстового архива и, возможно, 1,5* для двоичного.

person Rick Berge    schedule 06.07.2010