Tôi có rất nhiều dữ liệu địa lý đại diện trong cấu trúc đối tượng đơn giản chỉ bao gồm các cấu trúc. Tất cả các trường của tôi đều thuộc loại giá trị.Tuần tự hóa nhanh/giải tuần tự hóa các cấu trúc
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;
}
Dữ liệu được chia thành các phần nhỏ Parent[]
-s. Mỗi mảng chứa một vài nghìn trường hợp Gốc. Tôi có quá nhiều dữ liệu để giữ tất cả trong bộ nhớ, vì vậy tôi cần phải trao đổi những phần này cho đĩa qua lại. (Một tệp sẽ có kết quả xấp xỉ 2-300KB).
Cách hiệu quả nhất để tuần tự hóa/deserializing các Parent[]
thành byte[]
cho dumpint vào đĩa và đọc lại là gì? Liên quan đến tốc độ, Tôi đặc biệt quan tâm đến deserialization nhanh, tốc độ ghi không phải là quan trọng.
Có đơn giản BinarySerializer
đủ tốt không? Hoặc tôi có nên hack xung quanh với StructLayout
(see accepted answer) không? Tôi không chắc chắn nếu điều đó sẽ làm việc với lĩnh vực mảng của Parent.children
.
CẬP NHẬT: Trả lời nhận xét - Có, các đối tượng không thay đổi (mã được cập nhật) và thực sự trường children
không phải là loại giá trị. 300KB âm thanh không nhiều nhưng tôi có hàng chục tập tin như vậy, vì vậy tốc độ không thành vấn đề.
_Tất cả các trường của tôi đều thuộc loại giá trị_ - Trường 'trẻ em' không phải là loại giá trị. –
300KB là số tiền nhỏ, số tiền này được deserialized/serialized trong 0.1s w/o tối ưu hóa –
Là tất cả dữ liệu của bạn chỉ đọc? – usr