Быстрая сериализация / десериализация структур
У меня есть огромное количество географических данных, представленных в простой структуре объекта, состоящей только из структур. Все мои поля имеют тип значения.
public struct Child
{
readonly float X;
readonly float Y;
readonly int myField;
}
public struct Parent
{
readonly int id;
readonly int field1;
readonly int field2;
readonly Child[] children;
}
Данные аккуратно разбиваются на небольшие частиParent[]
-s. Каждый массив содержит несколько тысяч экземпляров Parent. У меня слишком много данных, чтобы хранить все в памяти, поэтому мне нужно поменять их на диск туда и обратно. (Один файл получит около 2-300 КБ).
Каков наиболее эффективный способ сериализации / десериализацииParent[]
кbyte[]
для дампа на диск и чтения обратно? Что касается скорости,Я особенно заинтересован в быстрой десериализацииСкорость записи не так критична.
Было бы простоBinarySerializer
достаточно хорошо? Или я должен взломать сStructLayout
(см. принятый ответ)? Я не уверен, что это будет работать с полем массиваParent.children
.
ОБНОВЛЕНИЕ: Ответ на комментарии - Да, объекты неизменны (код обновлен) и действительноchildren
поле не является типом значения. 300KB звучит немного, но у меня есть миллионы таких файлов, поэтому скорость имеет значение.