datacontractserializer 및 binaryformatter serializers에 대한 자세한 내용을 다루는 기사를 읽었습니다. 지금까지 읽은 내용을 토대로 필자는 binaryformatter가 datacontractserializer보다 적은 설치 공간을 가져야한다는 인상하에있었습니다. DataContractSerializer가되는 이유는 XML infoset으로 serialize되는 반면 binaryformatter는 독점적 인 바이너리 형식으로 serialize됩니다.DataContractSerializer 대 BinaryFormatter 성능
다음은
[Serializable]
[DataContract]
public class Packet
{
[DataMember]
public DataSet Data { get; set; }
[DataMember]
public string Name { get; set; }
[DataMember]
public string Description { get; set; }
}
데이터 집합이 [AdventureWorks].[Sales].[SalesOrderDetail]
테이블
using (var fs = new FileStream("test1.txt", FileMode.Create))
{
var dcs = new DataContractSerializer(typeof(Packet));
dcs.WriteObject(fs, packet);
Console.WriteLine("Total bytes with dcs = " + fs.Length);
}
using(var fs = new FileStream("test2.txt", FileMode.Create))
{
var bf = new BinaryFormatter();
bf.Serialize(fs, packet);
Console.WriteLine("Total bytes with binaryformatter = " + fs.Length);
}
Results
Total bytes with dcs = 57133023
Total bytes with binaryformatter = 57133984
질문에서 121317
행으로 채워 된 시험이다 왜 datacontractserializer 이상의 경우 BinaryFormatter에 대한 바이트 수 더? 그것은 훨씬 덜해야하지 않습니까?
통찰력에 감사드립니다. DataSet을 사용하는 데 어려움이 있습니다. 너무 많은 문제 !! – stackoverflowuser
@stackoverflowuser : 크기가 큰 문제인 경우, 필자는 직렬화 된 스트림을 디플로터를 통해 실행하는 것만으로도 운이 좋았다. –