Generic Perfomance

 Θελωντας να δοκιμασω την διαφορα σε performance ενος non generic Stack στο οποιο εχουμε boxing και unboxing και το αντιστροφο και σε Stack<T> στο οποιο δεν εχουμε τα boxing και unboxing.Υποβαλοντας τα stacks σε 1000000000 επαναληψεις ενος Push και ενος Pop παρατηρησα γενικα οτι τα Generic ειναι καλυτερα στο performance οπως και ειναι αναμενομενο αλλα αμα βαζουμε στο Stack strings παρατηρουμε μια διαφορα σε χρονο εκτελεσης που ευνοει το non generic Stack.Για του λογου το αληθες δειτε τα ακουλουθα screens και τρεξτε και εσεις το κωδικα που σας παραθετω πιο κατω.

 

 

Αρα αν το must ειναι η αποδοση και οχι το strong type και χρειαζεστε stacks με stings τοτε χρησιμοποιήστε Non generic Stacks.

 

 

 

Share/Bookmark
Published Δευτέρα, 8 Φεβρουαρίου 2010 2:32 πμ by AlxDjo

Comments

# re: Generic Perfomance

Δεν αποτελεί μυστήριο το αποτέλεσμα της δοκιμής σου.Από τους τύπους δεδομένων που δοκίμασες όλοι πλην του string είναι value types.Σε αυτές τις περιπτώσεις το boxing/unboxing που εφαρμόζεται στα non-generic collections κοστίζει σε επιδόσεις.Αντίθετα στο string (και σε κάθε reference type) δεν υπάρχει αυτό το όφελος και το γεγονός ότι ο κώδικάς σου κατασκευάζει τον τύπο Stack<string> δείχνει τον ελάχιστο επιπλέον φόρτο που προκαλεί.

Όμως η εφαρμογή σου παραβλέπει μια μικρή λεπτομέρεια:μια real-life εφαρμογή με non-generic collections οφείλει να κάνει type checking κάθε φορά που κάνει unboxing από τον τύπο Object σε αυτόν που δουλεύεις.Αυτό προσθέτει επιπλέον φόρτο ο οποίος τελικά υπερνικά το κόστος που προσθέτει η χρήση ενός generic,ιδιαίτερα σε περίπλοκες εφαρμογές όπου για το ίδιο αντικείμενο μπορεί να κάνεις πολλαπλούς ελέγχους.

Συμπέρασμα λοιπόν είναι ότι οι περιπτώσεις που τα non generic collections πραγματικά συμφέρουν από άποψη performance και μόνο είναι κάπως περιορισμένες.

Παρασκευή, 12 Φεβρουαρίου 2010 11:57 πμ by darklynx

Leave a Comment

(required) 
(required) 
(optional)
(required) 
Submit