2013-02-15 16 views
5

मेरे पास एक jagged सरणी DataMember है जो byte[800][10000][1] देता है जो ~ 8MB डेटा का अनुवाद करता है। जब DataContractSerializer का उपयोग करके क्रमबद्ध किया जाता है तो यह बाइनरी के लिए फ़ाइल आकार 120 एमबी और टेक्स्ट के लिए 300 एमबी में बदल जाता है। पाठ क्रमबद्धता को देखते हुए, यह इंगित करता है कि यह प्रत्येक बाइट मान के चारों ओर एक टैग रखता है ताकि यह इंगित किया जा सके कि इसका आधार 64 एन्कोडेड मान इत्यादि है, जो इस आकार के विस्तार का कारण हो सकता है।कुशलता से एक jagged बाइट सरणी serializing

जब पाठ का उपयोग कर धारावाहिक क्या एक बड़ी दांतेदार ब्लॉब DataContractSerializer का उपयोग कर (या उस बात के लिए किसी अन्य serializer)

टुकड़ा XML आउटपुट क्रमानुसार करने एक कारगर तरीका है:

<a:ArrayOfbase64Binary><a:base64Binary>CQ==</a:base64Binary><a:base64Binary>Bw==</a:base64Binary><a:base64Binary>BQ==</a:base64Binary><a:base64Binary>AA==</a:base64Binary><a:base64Binary>AQ==</a:base64Binary><a:base64Binary>AA==</a:base64Binary><a:base64Binary>BA==</a:base64Binary><a:base64Binary>Bg==</a:base64Binary><a:base64Binary>CA==</a:base64Binary><a:base64Binary>AA==</a:base64Binary><a:base64Binary>AA==</a:base64Binary><a:base64Binary>AA==</a:base64Binary><a:base64Binary>AA==</a:base64Binary><a:base64Binary>AA==</a:base64Binary><a:base64Binary>AA==</a:base64Binary><a:base64Binary>AA==</a:base64Binary> 

उत्तर

5

आप एक का उपयोग कर की कोशिश कर सकते BinaryFormatter यदि आपको अन्य सिस्टम के साथ अंतःक्रियाशीलता की परवाह नहीं है, लेकिन केवल प्रदर्शन के बारे में:

byte[800][10000][1] foo = ... fetch it 
BinaryFormatter formatter = new BinaryFormatter(); 
using (var stream = File.OpenWrite("foobar.dat")) 
{ 
    formatter.Serialize(stream, foo); 
} 
+0

मैंने कोशिश की। अगर वह 10 एमबी छोटा था। – LadderLogic

संबंधित मुद्दे