hotti: Fatal Error abfangen

Beitrag lesen

hi,

Wozu das Auslagern gut sein kann: Es verringert den Overhead, der beim Kompilieren der Source einer Klasse besteht, insbesondere dann, wenn die Klasse sehr viele Methoden bereitstellt.

Hast du das durch Tests nachvollzogen oder ist das einfach nur so ins Blaue hineingeraten?

Der Compile-Overhead ist ein wesentlicher Grund für die Entwicklung von mod_perl. Während im reinen CGI-Betrieb die ganze Source bei jedem Request neu kompiliert werden muss, liegt bei mod_perl der Code im Hauptspeicher, die Sourcen dafür wurden bereits beim Starten des Webservers kompiliert.

Der AutoLoader von Perl macht genau das, was ich gestern für PHP realisiert habe, nämlich Sourcen von Methoden auf Anforderung kompilieren. Die Einbindung dieses Features ist in Perl bereits seit Jahren möglich und bringt bereits mit der Base-Method AUTOLOAD hervorragende Ergebnisse hinsichtlich Code-Optimierung. In Perl ist die Verzeichnisstruktur außerdem im Default vorgegeben (s. Wartungsaufwand).

Die große Frage ist aber: Wieviel kostet das Zerhackstücken des Codes an Wartungsaufwand und wieviel Gewinn bekommt man durch diese vermutlich doch nur sehr geringe Optimierung.

Diese Frage kannst Du ebenso an jeden PHP-Programmierer durchreichen, der seinen Code auf mehrere Dateien verteilt (danke Fred F.).

Der Wartungsaufwand hängt im Wesentlichen davon ab, wie das Zerstückeln organisiert ist und welche Default-Organisation es dazu gibt, so wird Perls AutoLoader eine Methode, die in der Klasse selbst nicht deklariert ist, standardmäßig in lib/auto/Class suchen. In Perl sind die Entwickler mit 'AutoSplit' sogar noch einen Schritt weiter gegangen, das automatisiert die Installation von Klassen in denen Methoden für den AutoLoader vorgesehen sind.

Viele Grüße,
Hotti