Servus,
eines meiner Steckenpferde ist die Optimierung von vorhandenem CF-Code (ich habe echt ganze Nächte nur mit Messungen verbracht… *seufz*).
Erfahrungsgemäß kann man aus einem “normal” programmierten CF-Template durch einige Tricksereien noch bis zu 20% herauskitzeln – mein Rekord liegt bei 2100% 😉
Hier und da werde ich zu diesem Thema einiges zum Besten geben…Beispielfall: Loop über ein Array
Auf den ersten Blick ist an folgendem Code nichts auszusetzen:
<cfloop from=”1″ to=”#arrayLen(theArray)#” index=”arrayItem”>
[…]
</cfloop>
Das Nadelöhr ist hierbei der Wert für “to”: CF evaluiert den Wert für jeden Schleifendurchgang – ein kleines, aber feines Detail. Bei einer hohen Anzahl an Arraypositionen kann sich dies deutlich auf die Verarbeitungszeit auswirken.
Besser ist es, den Wert von arrayLen() vorher in eine Variable zu schreiben:
<cfset variables.theArrayLen=arrayLen(theArray)>
<cfloop from=”1″ to=”#variables.theArrayLen#” index=”arrayItem”>
[…]
</cfloop>
“to” enthält nun eine normale Variable, deren Wert nur ausgelesen und nicht für jeden Schleifendurchgang ausgewertet werden muss.
Dieser Optimierungswahn entstammt einem dieser denkwürdigen Tage, als Agent M voller Bestürzung entdeckte, wie ein freier Mitarbeiter seiner Firma eine Händlersuche implementierte:
select * from haendler
Und dann über eine Schleife jede aus der Datenbank geholte Postleitzahl testen, ob diese innerhalb eines definierten Bereiches ist.
Ach, der Kollege Schulze 🙂
Ja, Recht hast Du – das war wohl mit Sicherheit die Geburtsstunde meiner Optimierungskarriere 😉
Comments on this entry are closed.