मेरे पास भौतिक डेटा का विशाल हिस्सा है जो साधारण ऑब्जेक्ट संरचना में दर्शाया गया है जिसमें केवल structs शामिल हैं। मेरे सभी फ़ील्ड मूल्य प्रकार के हैं।फास्ट सीरियलाइजेशन/structs के deserialization
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 के छोटे हिस्से को अच्छी तरह से ऊपर chunked है। प्रत्येक सरणी में कुछ हज़ारों अभिभावक उदाहरण होते हैं। मेरे पास स्मृति में सभी को रखने के लिए बहुत अधिक डेटा है, इसलिए मुझे इन हिस्सों को डिस्क पर आगे और पीछे स्वैप करने की आवश्यकता है। (एक फ़ाइल लगभग 2-300 केबी का परिणाम होगा)।
Parent[]
को byte[]
पर डिस्क पर डंपिंट और डिस्क पढ़ने के लिए क्रमबद्ध करने/deserializing का सबसे प्रभावी तरीका क्या होगा? गति के बारे में, मुझे विशेष रूप से तेजी से deserialization में रुचि है, लिखना गति महत्वपूर्ण नहीं है।
आसान BinarySerializer
पर्याप्त होगा? या मुझे StructLayout
(see accepted answer) के साथ चारों ओर हैक करना चाहिए? मुझे यकीन नहीं है कि क्या यह Parent.children
के सरणी क्षेत्र के साथ काम करेगा।
अद्यतन: टिप्पणियों पर प्रतिक्रिया - हां, वस्तुएं अपरिवर्तनीय (कोड अपडेट की गई हैं) और वास्तव में children
फ़ील्ड मान प्रकार नहीं है। 300 केबी बहुत ज्यादा नहीं लगता है लेकिन मेरे पास इस तरह की फाइलें हैं, इसलिए गति मायने रखती है।
_ मेरे सभी फ़ील्ड मान प्रकार_ हैं- 'बच्चों का फ़ील्ड एक मान प्रकार नहीं है। –
300 केबी छोटी राशि है, यह राशि 0.1s w/o अनुकूलन –
में deserialized/serialized है क्या आपका सभी डेटा केवल पढ़ने के लिए है? – usr