Θα πρέπει να χρησιμοποιήσεις κάποιο profiler όπως τον Performance Analyzer που υπάρχει στις μεγαλύτερες εκδόσεις του Visual Studio, το
dotTrace της Jetbrains ή κάποιο άλλο.
Συνήθως όμως τέτοια προβλήματα φαίνονται "δια γυμνού οφθαλμού". Αν έχεις βάλει πάρα πολλά components, ή αν η Initialize που έφτιαξες κάνει περίεργα πράγματα, φαίνεται αμέσως. Πολλές φορές ο profiler απλά επιβεβαιώνει αυτό που υποψιαζόσουν από την αρχή.
Να σημειώσω επίσης ότι η χρήστη threads και backgroundworkers ΔΕΝ σημαίνει ότι η εφαρμογή θα πάει πιο γρήγορα. Αν δεν καταλαβαίνεις τί συμβαίνει μπορείς να προκαλέσεις πολύ μεγαλύτερη καθυστέρηση, π.χ. προκαλώντας blocks μεταξύ των thread ή γεμίζοντας τη μνήμη πολύ γρηγορότερα απ' ότι μπορεί να ανταπεξέλθει η εφαρμογή. Το σίγουρο είναι ότι θα αυξήσεις κατά πολύ την πολυπλοκότητα της εφαρμογής σου.
Αν μείνουμε στο παράδειγμα του Libra Storm, η εμφανέστατη πολυπλοκότητα κρύβει το ότι ο κώδικας δεν κάνει αυτό που θέλουμε: ΔΕΝ γεμίζει πιο γρήγορα το dataset με τιμές από τη βάση αλλά απλά προσθέτει μία-μία γραμμές. Τα δεδομένα όμως έρχονται από τη βάση με τη μία σε μορφή dataset οπότε ο κώδικας αυτός δεν θα βοηθούσε σε τίποτε. Αν όντως χρειάζεται το ασύγχρονο φόρτωμα των δεδομένων υπάρχουν άλλες τεχνικές και άλλα components.
Παναγιώτης Καναβός, Freelancer
Twitter: http://www.twitter.com/pkanavos