Philipp Hasenfratz: Geschwindigkeit von strict/warnings

Beitrag lesen

Halihallo Andres

immer wieder auf dem HalliHallo Tripp :-)

Stimmt schon aber ich hab ja gesagt, dass das ein wenig her ist, damals wusste ich noch gar nicht was kompillieren bedeuted.

Das hatte ich schon verstanden, deshalb habe ich es ja auch nur als Beispiel genommen,
um auf die Gefahren hinzuweisen und zu "beweisen", dass es sich als schwierig heraus-
stellen könnte, ein passendes Messverfahren zu konzeptionieren.

Aber ich habe damals ein Script mittels require eingebunden, was ja erst in der Laufzeit ausgeführt wird (ich wusste damals nicht einmal wie man ein mit use nutzbares Script schreibt). Daher müsste doch das eingebundene Script immer kompiliert werden (solange man nicht unter Mod-Perlarbeited)? Oder ist Perl so intelligent das zu verhindern?

Ist es, ja :-)
require überprüft, ob die entsprechende Datei bereits required worden ist. Ist dem so,
wird gleich zurück zum Hauptprogramm gesprungen. Man könnte also ein Verzeichnis an-
legen, mit ca. 500'000 gleichen Perl-Programmen mit entsprechenden Zahlenwerten hinten
angesetzt; dann eine Schleife, wie du es vorschlägst, jedoch immer nur eines dieser
500'000 Programme requiren, welches noch nicht required worden ist (eg.
require 'prog'.$schlaufen_index;).

Man könnte auch ein Scipt mit einem Destructor aufrufen und das dann prüfen, aber das hätte den Nachteil das die Geschwindigkeit nochmal anders ist als in "normalen" Perl da objektorientiertes ein guten Teil langsamer ist als das normale, daher auch  nicht viel informativer.

In wie fern glaubst du, dass der Destructor dir helfen könnte? - Das ist in Perl
eine Methode, wie jede andere, welche einfach automatisch aufgerufen wird; per se
hat sie jedoch nichts mit dem zerstören der Daten zu tun, das wird durch den
Garbage Collector gemacht.

Wie genau "use benchmark" ist weiß ich nicht... ist wahrscheinlich eher dazu da die Geschwindigkeit einzelner Scriptteile zu testen.

Stimmt. Für das, was wir testen wollen eben nicht sehr geeignet, da man wohl, wie ich
bereits sagte, eine Stufe weiter unten (C/Quelltext-Ebene) ansetzen müsste.

Viele Grüsse

Philipp