Dienstag, 1. Dezember 2009

FPC: Effizienzsteigerung durch CONST

An verschiedenen Stellen habe ich mittlerweise gelesen, dass die Verwendung von CONST bei der Übergabe von Zeichenketten an Prozeduren und Funktionen eine Geschwindigkeitssteigerung ergeben soll. Das habe ich jetzt mal getestet. Die Rede ist von einer Deklaration wie

PROCEDURE DoSomething(CONST s: ANSIString);

statt

PROCEDURE DoSomething(s: ANSIString);

Und in der Tat: Mit einem Beispielprogramm habe ich eine Effizienzsteigerung um den Faktor 3 gemessen, wenn als Zeichenkette »This is a test.« übergeben wird. Mit längeren Zeichenketten fällt der Effekt noch stärker zugunsten der CONST-Variante aus. Verwendet man CONST, hängt die verbrauchte Zeit nicht von der Länge der Zeichenkette ab. Verwendet man CONST nicht, wächst die verbrauchte Zeit mit der Länge der Zeichenkette.

Muss man also an einer übergebenen Zeichenkette in einer Prozedur oder Funktion nichts ändern, so empfiehlt es sich tatsächlich, diese als CONST zu deklarieren.