Je parcourais des articles pour en savoir plus sur les sérialiseurs datacontrerserializer et binaryformatter. Sur la base de la lecture faite jusqu'à présent, j'avais l'impression que binaryformatter devrait avoir une empreinte inférieure à celle de datacontrerserializer. Raison étant DataContractSerializer sérialise à l'informationet xml tandis que binaryformatter sérialise à un format binaire propriétaire.Performance DataContractSerializer vs BinaryFormatter
Après le test est
[Serializable]
[DataContract]
public class Packet
{
[DataMember]
public DataSet Data { get; set; }
[DataMember]
public string Name { get; set; }
[DataMember]
public string Description { get; set; }
}
DataSet
était peuplée de 121317
lignes de [AdventureWorks].[Sales].[SalesOrderDetail]
Table
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
Question Pourquoi le nombre d'octets pour BinaryFormatter plus de DataContractSerializer? Ne devrait-il pas être beaucoup moins?
Merci pour la perspicacité. Je suis bloqué avec l'utilisation de DataSet. Trop de problèmes !! – stackoverflowuser
@stackoverflowuser: J'ai eu beaucoup de chance avec l'exécution du flux sérialisé via un déflateur, si la taille est un gros problème. –