Antonio Esposito's


Prodotti tipici .NETtiani

Benchmark Serializzazioni #2

Ho ripetuto il test sui serializzatori (http://blogs.dotnethell.it/espositos/Benchmark-Serializzazioni__16224.aspx) aggiungendo altri due scenari:

istanza:
[Serializable][DataContract]
public class item {
  [DataMember]
  public int ID {get; set; }
  [DataMember]
  public string LongString {get; set; } //MANCA IL BYTE ARRAY
  [DataMember]
  public DataTable Table {get; set; }
}

Questa istanza viene popolata all'inizio del benchmark così:
ID= intero random
LongString = Convert.ToBase64String(bytearray di 1MB)
Table = un datatable deserializzato con DataSet.ReadXml() di 12 colonne per 300 righe circa

Risultati:
Formatter                bytes (%)              ms. serializzazione (%)   ms. deserializzazione(%)
BinaryFormatter       1.718.140 (100%)  24 (100%)                       22 (100%)
SoapFormatter         1.801.536 (105%)  107 (446%)                     34 (155%)
XMLSerializer           1.737.248 (101%)  17 (71%)                         26 (117%)
DataContractS.        1.675.436 (98%)    19 (79%)                         40 (182%)
DataContractJsonS.  1.703.168 (99%)   32 (133%)                        87 (395%)

 

istanza:
[Serializable][DataContract]
public class item {
  [DataMember]
  public int ID {get; set; }
  [DataMember]
  public string[] LongString {get; set; } //ARRAY DI STRING + MANCA IL BYTE ARRAY
  [DataMember]
  public DataTable Table {get; set; }
}

Questa istanza viene popolata all'inizio del benchmark così:
ID= intero random
LongString = array di 1000 string random di dimensione 1KBca
Table = un datatable deserializzato con DataSet.ReadXml() di 12 colonne per 300 righe circa

Risultati:
Formatter                bytes (%)              ms. serializzazione (%)   ms. deserializzazione(%)
BinaryFormatter       1.691.046 (100%)  29 (100%)                       22 (100%)
SoapFormatter         1.795.405 (106%)  103 (355%)                     34 (179%)
XMLSerializer           1.726.153 (102%)  22 (76%)                         26 (113%)
DataContractS.        1.662.405 (98%)    18 (62%)                         40 (167%)
DataContractJsonS.  1.671.485 (99%)   38 (132%)                        87 (413%)

Considerazioni:
A differenza del precedente test, questo dimostra come i serializzatori non binari sprecano risorse nella serializzazione di un bytearray.... Differentemente resta importante il risultato del DataContractSerializer (e subito dopo l'XMLSerializer) per la velocità di serializzazione (fino al 38% più veloce) mantenendo una dimensione anche inferiore a quella del BinaryFormatter. Il JsonSerializer ha beneficiato moltissimo dell'assenza del bytearray, dimostrandosi una valida alternativa al DataContract negli scenari che lo utilizzano (AJAX o JavaScript).

Ciao

Categoria: Tips
martedì, 12 gen 2010 Ore. 12.49
Statistiche
  • Views Home Page: 10.818
  • Views Posts: 59.079
  • Views Gallerie: 0
  • n° Posts: 44
  • n° Commenti: 16
Copyright © 2002-2007 - Blogs 2.0
dotNetHell.it | Home Page Blogs
ASP.NET 2.0 Windows 2003