Crasch

Il blog di Carlo Folini
posts - 33, comments - 734, trackbacks - 253

Comparazione performance di dataset 2.0 e entity object

Era un po' che volevo fare qualche prova a riguardo ma, da buon programmatore, sono essenzialmente pigro. 

Partendo dalla demo dell'articolo di Brian Noyes in cui fà una analisi delle varie tipologie di comunicazione utilizzabili da uno smarclient, sono andato a vedere come si relazionano queste due modalità di portarsi a spasso i dati (prescindendo da ragionamenti da quale sia meglio in termini di SO ;-)).

Essenzialmente un'applicazione winform che chiama un webservice che interroga l'adventrure works (Il tutto fatto con la RC di vs2005 e la CTP di settembre di SQL).

I dati vengono presi con una query 'semplice' ovvero

SELECT     SalesOrderID, UnitPrice, CarrierTrackingNumber, ModifiedDate
FROM         Sales.SalesOrderDetail
WHERE     (SalesOrderID < 44000)

estraendo circa 300 record (un numero di record verosimile per quello che solitamente mi serve).

Questi dati vengono poi messi da un oggetto di accesso ai dati  in un array di 'entity object' in un caso

 

e in un dataset tipizzato nell'altro.

Dal webservice vengono esposti i due metodi corrispondenti, che oltre a ritornare l'oggetto ritornano anche il tempo di esecuzione (ticks).

Nel caso del dataset il metodo è:

 

HiResTimer è un timer un po' più preciso del DateTime.now.ticks usato da Noyes (comunque non sposta di molto il discorso sigh!).

Lo smart client chiama questi due ws e fà qualche ulteriore statistica sui tempi.

 

Il risultato è che, ovviamente, gli entity object sono più performanti.

Per questi abbiamo il risultato seguente

Array Ticks: Call=44,421 milliseconds 87% (Tick=159010)
service=4,2731 milliseconds 8% (Tick=15296)
Serialize=40,148 milliseconds 78% (Tick=143714)
databind=6,4647 milliseconds 12% (Tick=23141)
total=50,886 milliseconds 100% (Tick=182151) 
 per i dataset

Dataset Ticks: Call=122,01 milliseconds 78% (Tick=436775)
service=14,126 milliseconds 9% (Tick=50568)
Serialize=107,89 milliseconds 69% (Tick=386207)
databind=34,048 milliseconds 21% (Tick=121878)
total=156,06 milliseconds 100% (Tick=558653) 
Ovvero un tempo di mezzo decimo per gli EO contro un decimo e mezzo per dataset ovvero un fattore 3.

Aumentando il numero di records (5000) le differenze si assottigliano arrivando ad un fattore 2

Array Ticks: Call=236,04 milliseconds 95% (Tick=844919)
service=40,865 milliseconds 16% (Tick=146280)
Serialize=195,17 milliseconds 78% (Tick=698639)
databind=11,527 milliseconds 4% (Tick=41263)
total=247,56 milliseconds 100% (Tick=886182)

 per i dataset

Dataset Ticks: Call=412,00 milliseconds 71% (Tick=1474794)
service=46,953 milliseconds 8% (Tick=168073)
Serialize=365,05 milliseconds 63% (Tick=1306721)
databind=164,91 milliseconds 28% (Tick=590316)
total=576,91 milliseconds 100% (Tick=2065110) 

Print | posted on giovedì 29 settembre 2005 03:39 | Filed Under [ .Net ]

Feedback

Gravatar

# re: Comparazione performance di dataset 2.0 e entity object

effettivamente è meno leggibile, però è simpatico poter cliccare nel codice e modificarlo al volo...ovvio che online rimane così com'è, però lo si può leggere meglio, perchè si separano le linee di codice, lo si manipola come si vuole...
29/09/2005 15:17 | Igor Damiani
Gravatar

# re: Comparazione performance di dataset 2.0 e entity object

Diciamo che come dico all'inizio del post sono pigro e per questo non molto attivo nel blog.
Vista la frequenza dei miei post non sono atrezzato in maniera opportuna e mi sono atrezzato al meglio degli strumenti.

Spero comunque che la forma non sia un vincolo per il contenuto.

E poi visto che sono un fan dei dataset se qualcuno evita di leggere il post non mi dispiace neanche molto!

29/09/2005 15:42 | Carlo Folini
Gravatar

# re: Comparazione performance di dataset 2.0 e entity object

mi pare di aver letto da qualche parte:
DataSet are Evil... o qc del genere :-)
29/09/2005 15:52 | Simone Chiaretta
Gravatar

# re: Comparazione performance di dataset 2.0 e entity object

Thanks for your post! I believe there are many who feel the same satisfaction as I read this article! I hope you will continue to have such articles to share with everyone!
happy wheels
17/06/2017 14:15 | slither io
Comments have been closed on this topic.

Powered by:
Powered By Subtext Powered By ASP.NET