Analyse von Beispiel 11

Auf einem leerlaufenden Server wurde das example11.cgi mehrfach ausgeführt. Dieses Beispiel liest ein Template ein, modifiziert es, und druckt es wieder aus. Die wichtigen Größen sind
File Grösse (in Byte)
example11.cgi 3072
Output 15505
DBAD.pm 37930
CGI.pm 146029
Die Kommandozeile sah jedesmal so aus:
time ./example11.cgi > /dev/null
Durch Auskommentieren der relevanten Teile konnten folgende Geschwindigkeiten gemessen werden:
Schritt Zeit (sec) Anteil in %
perl laden 0.15 9.74
Script laden 0.05 3.24
DBAD.pm laden 0.60 38.96
CGI.pm laden 0.38 24.67
template parsen 0.11 7.14
template ausführen 0.25 16.23
Summe 1.54 100.00

Analyse

Der grösste einzelne Faktor, und die grösste Überraschung, ist die Ladedauer der DBAD.pm. Mit knapp 40% der Ausführungszeit ist sie fast doppelt so "teuer" wie die CGI.pm-Library, obwohl jene fast 4-mal so groß ist.

Das Laden der beiden Libraries zusammen kostet fast 2/3 der Laufzeit des Skripts. Die konstanten Faktoren (Ladezeiten von perl, Skript, und Libraries) machen zusammen 76% der Laufzeit ein, also 3/4 der Laufzeit. In einer Umgebung, in der das Skript permanent laufen kann (mod_perl-Umgebung von apache oder vermittlungs-skript nach Art von WebObjects), würde dieser Faktor fast völlig wegfallen, so daß die Laufzeit kleiner Skripte sich vervierfachen würde.

Die verdächtig grosse Ladezeit der DBAD.pm verdient einer weitergehende Untersuchung.