Καλησπέρα σας,
Δουλεύω ένα project σε VB.NET, στο οποίο έχει μεγάλη σημασία η γρήγορη εκτέλεση του κώδικα. Λόγω σχεδίασης χρησιμοποιώ κάποια αντικείμενα με τέτοιο τρόπο στον κώδικα έτσι ώστε αναγκαστικά έχω late binding. Το θέμα είναι ότι το αντικείμενο είναι το ίδιο σε όλη τη διάρκεια της εκτέλεσης, οπότε πρακτικά χρειάζεται μία φορά να γίνει το late binding. Παραθέτω λίγο κώδικα για να γίνω πιο αντιληπτός
Public MustInherit Class AbstractObject
Public MustOverride Sub DoWork()
End Class
Public Class ConcreteObject
Inherits AbstractObject
Public Overrides Sub DoWork()
'DoWork Code here...
End Sub
End Class
Sub Main()
Dim myObj As AbstractObject
myObj = New ConcreteObject
For I As Integer = 1 To 1000000
myObj.DoWork()
Next
End Sub
Άν όντως το late binding γίνεται κάθε φορά, τότε υπάρχει καθυστέρηση στην εκτέλεση του κώδικα. Μέσα στο msdn, υπάρχει ένα άρθρο με τίτλο "Performance Optimization in Visual Basic .NET" όπου προτείνεται να αποφεύγεται το late binding όσο είναι δυνατόν. Για είναι διατηρήσιμος ο κώδικας δεν μπορώ να αποφύγω το late binding. Έκανα κάποια πειράματα και κάποιες χρονομετρήσεις (σε κώδικα όμοιο με τον παραπάνω) και οι αντίστοιχοι χρόνοι βγήκαν πολύ κοντά, αλλά όχι ίδιοι (11,89 με LB και 11,77 χωρίς LB). Γνωρίζει κανείς αν ο compiler κάνει κάποιου είδους βελτιστοποίηση για τέτοιες περιπτώσεις;
Υ.Γ. Έχω διαβάσει κάπου στο forum ότι η C++ είναι πιο γρήγορη από VB.NET και C# όταν δεν χρησιμοποιείται ο garbage collector (των VB και C#) αλλά οι runtime βιβλιοθήκες της C++. Λίγο αργά βέβαια, για αυτό και επέλεξα την VB.NET.
Τάσος Καραγιάννης
Baby debugging steps...