저는 분명히 뭔가 분명한 것을 놓치고 있습니다. 그러나 두 번째 경우에 더 나은 압축률이 왜 있는지 설명 할 수 있습니까?!하나 또는 두 개의 메모리 스트림을 사용하는 gZipStream을 사용하면 큰 차이가 있습니다.
사례 1 : 압축률이 매우 낮고 때로는 크기도 커집니다.
using (var memoryStream = new System.IO.MemoryStream())
using (var gZipStream = new GZipStream(memoryStream, CompressionMode.Compress))
{
new BinaryFormatter().Serialize(gZipStream, obj);
gZipStream.Close();
return memoryStream.ToArray();
}
사례 2 : 압축률이 훨씬 높고 크기가 커지지 않습니다.
미러 압축 해제를 수행했으며 두 경우 모두 아무 문제없이 원본 개체로 deserialize 할 수 있습니다.
UncSize : 58062085B, COMP1 : 여기
일부 스탯이다 46828139B, 0.81 %UncSize : 58062085B, COMP2 : 31326029B 0.54 %
UncSize : 7624735B, COMP1 : 7743947B 1.02 %
UncSize : 7624735B, COMP2 : 5337522B, 0.70 %
UncSize 1 237628B, COMP1 : 1265406B, 1.02 %
UncSize : 1237628B, COMP2 : 921695B, 0.74 %
감사합니다. 이것은 내가 찾고 있었던 바로 그 것이다. .net 4.0을 사용 중입니다. 아직 여기에 해당합니다. 당신이 말한대로 64k가 가장 효과적입니다. 버퍼가 작 으면 압축이 약합니다. 더 나은 메모리 관리를 위해 두 개의 메모리 스트림 대신 BufferStream을 사용하도록 코드를 변경했습니다. 감사 – Marek