2013-02-15 19 views
5

numaralı pürüzlü bir dizi var, bu da byte[800][10000][1] değerini döndürüyor ve bu da ~ 8MB veriye dönüşüyor. DataContractSerializer kullanılarak serileştirildiğinde, İkili için 120 MB ve Metin için 300 MB bir dosya boyutuna dönüşür. Metin serileştirme işlemine bakıldığında, bu büyüklüğün kodlanmış bir değerinin vb. Olduğunu belirtmek için her bayt değerinin etrafında bir etiket koyduğunu belirtir. Bu, bu boyut büyütmesinin sebebi olabilir. Bir kullanarak deneyebilirsinizTırtıklı bir bayt dizisini verimli bir şekilde serileştirme

<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> 

cevap

5

: Metin kullanılarak serileştirilebilen zaman DataContractSerializer kullanarak büyük bir tırtıklı damla (ya da bu konuda herhangi bir başka seri hale)

pasajı XML çıkışını seri hale getirmek için etkili bir yol nedir

BinaryFormatter, diğer sistemlerle birlikte çalışabilirlik hakkında değil, yalnızca performansla ilgili olarak ilgileniyorsanız, bunu yalnızca şu şekilde deneyimleyebilirsiniz:

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

Bunu denedim. Eğer 10MB daha küçüktü. – LadderLogic

İlgili konular