Всех с многочисленными праздниками!
Я потихонечку пилю библиотеку для числ моделирования, куда сгребаю все интересное, что сумел сделать за посл годы непосильного труда. В частности, сейчас там образовался целый зоопарк контейнеров (шаблоны, параметризованные по типу, размерности пр-ва и т.д.), которые приходиться как то хранить на диске в бинарном виде. Теперь вопросы.
1) Многие умные люди советовали мне перейти на hdf5. Сейчас данные хранятся в виде: некий заголовок (тип контейнера, размерность и размеры, тип ячейки и т.д.) + с-но массив данных. То, что я про hdf5 знаю (чуть-чуть читал) говорит что я смогу средствами hdf5 организовывать заголовок... и с-но весь профит. Проблем с кроссплатформенностью пока нету, за пределы x86_64 лезть не собираюсь. Проблем записать/распарсить бинарный заголовок тоже как бы нет... хожу в задумчивости, а оно (hdf5) мне надо?
Аргумент за (основной) - есть сторонние средства просмотра и обработки. Но дело в том, что данные в массиве зачастую упорядочены весьма нетрадиционным образом (локально рекурсивно, частично локально рекурсивно или вообще хитровывернуто), поэтому толку с тех сторонних средств... Аргумент против - как там оно с производительностью (я просто не в курсе)? Сейчас у меня массив пишется/читается просто одним куском (иногда мапируется), актуальные размеры до гигабайтов.
Eсть мнение что можно данные при записи и упорядочить трад. образом (все равно все упирается в пропускную способность диска, и лучше бы иметь один стандартный формат хранения чем зоопарк форматов). В общем я в глубоком недоумении - че делать то...
2) Описание ячейки массива. Я почти реализовал давнюю мечту - хранить в заголовке детальное описание структуры ячейки (хранятся данные вида «имя поля» - «тип поля» - «смещение от начала структуры»). Основной профит - при обработке можно оперировать этими самыми именами полей, и даже задавать некие ф-ии от них, скажем нарисуй ка мне 3D поле вида Ex**2+Ey**2+Ez**2. В hdf5 эти данные тоже можно упихать, но тут другой вопрос - а есть ли бол-мен стандартные решения для описания типов структур и послед работы с ними? Структуры могут быть тоже перекрученные, сожержащие другие структуры, массивы и и т.д. - но все POD ес-но.