Etwas
OT, aber mal zum Thema
RTTI:
Ich habe mal Tests bezüglich Geschwindigkeiten durchgeführt. Die
RTTI bremst ganz gewaltig.
Wenn man die Funktion sehr häufig nutzt sollte man daher eine Alternative andenken.
Anbei ein kleines FMX-Projekt (Sorry, aber auf
VCL lässt sich das ja ggf. auch leicht übertragen.)
Die Formularunit zeigt die verschiedenen Varianten.
Es werden 1Mio Objekte erzeugt und für alle Objkete die Eigenschaft "Value" ausgelesen und neu geschrieben.
Hier die Ergebnisse:
Zitat:
Create OL: 00:00:00.085 - Objektliste
Use OL (Value): 00:00:00.134 - direkte Benutzung der Eigenschaft
Use OL (Func): 00:00:00.239 - Zugriff auf die Eigenschaft über Funktionen
Use OL (Auto): 00:00:00.589 - Zugriff über Funktionen nach automatischer Erkennung
Use OL (
RTTI): 00:00:20.688 - Zugriff über
RTTI
Create ML: 00:00:00.072 - generische Liste
Use ML (Value): 00:00:00.132 - direkte Benutzung der Eigenschaft
Use ML (Func): 00:00:00.236 - Zugriff auf die Eigenschaft über Funktionen
Use ML (Auto): 00:00:00.583 - Zugriff über Funktionen nach automatischer Erkennung
Use ML (
RTTI): 00:00:20.695 - Zugriff über
RTTI
Da ich meine BL-Klassen automatisch erzeugen lasse, werde ich den Eigenschaftszugriff über entsprechende Funktionen realisieren.
Im Ergebnis geht das schneller. Mehr Schreibarbeit ist (durch das automatische Erzeugen der Klassen) damit auch nicht verbunden.
Das Framework kapselt den Zugriff und kann selbst die schnelle Version wählen wenn die Klasse dafür eingerichtet ist und andernfalls die
RTTI nutzen.