I рекомендует вместо этого прочитать файл с диска с помощью написанных вами функций, таких как read_uint32_whatever_endian(FILE*)
и т. Д., И сохранить их в новой 64-битной памяти struct
s.
Это изолирует ваш новый код от выбора, который компилятор делает для структуры памяти ваших структур.
На современном компьютере производительность такого анализа настолько минимальна, что, я уверен, вы вряд ли сможете его измерить.
Хотя есть угловой случай незначительный , в котором nmap
большие файлы базы данных, которые хранят ту же двоичную структуру, что и представление компилятора в памяти, являются плюсом, на практике этот случай не стоит много .
Преимущества различной сериализации на диске и в памяти обеспечивают множество практических плюсов:
- это переносимо - вы можете без проблем запускать свой код на разных процессорах с разными размерами слов и различными порядковыми номерами
- вы можете расширять структуры в любое время - вы можете превратить структуры в памяти в объекты с помощью методов и тому подобного, даже виртуальных методов C ++, и других преимуществ объектно-ориентированного проектирования; вы также можете добавлять члены, которые не сериализуются, например указатели и другие поля, и вы можете легко поддерживать новые версии файлов базы данных