Du widersprichst mir also, nur um dann das vorzuschlagen, was ich nachfolgend schon als – indirekte – Möglichkeit genannt habe …
Naja. Wie soll ich es sagen ... ich wollte keineswegs unhöflich oder verletzend formulieren, habe Dich aber zitiert und musste mich ergo eng an Deine Formulierung gehalten. Da stand zunächst es gehe nicht und erst weiter unten hast Du dann den, dem dieser Deiner vorherigen Behauptung widersprechenden Lösungsansatz selbst genannt.
Du hast jetzt von einer Webseite zitiert:
“if you have an error and a custom error handler which gets executed, that yields for a ~10X performance loss”
Das sehe ich als Aussage kritisch. Zu erst einmal muss man dedlfix folgen, der richtig aussagt, dass es egal sei dass man einen höheren Aufwand habe, wenn man so zum korrekten Ergebnis kommt. Der Bagger fährt ja auch erst zur Baustelle statt das Loch gleich im Hof des Bauunternehmens auszuheben...
Ich habe das mal gemessen.
Versuchsreihe A - PHP (als CGI) auf der Linux-Konsole:
Datei fehler0.php:
<html><style type="text/css"><script type="text/javascript>"
<?php
require_once '[link:http://www.fastix.org/r/use_strict.txt@title=use_strict.php]';
$str.=$var;
#R4
#R5
#R6
#R7
$foo='foo';
#include 'not.existent.file';
$bar=4/0;
?>
<p>(Not) Fine!</p>
</html>
Aufruf_ time php fehler0.php
real 0m0.042s
user 0m0.020s
sys 0m0.023s
fehler0_ohne_use_strict.php:
<html><style type="text/css"><script type="text/javascript>"
<?php
#DEFINE('DEBUG', 0); require_once 'use_strict.php';
#R4
#R5
#R6
#R7
$foo=foo;
include 'not.existent.file';
$bar=0;
if (0==$bar) { trigger_error('$baz ist 0! Durch 0 kann nicht dividiert werden.', E_USER_ERROR); }
$bar=4/$bar;
?>
<p>(Not) Fine! The Script was NOT breaked.</p>
</html>
Aufruf: php fehler0_ohne_use_strict.php:
real 0m0.038s
user 0m0.025s
sys 0m0.016s
Ich habe das mehrfach getestet. Die Werte haben sich nicht signifikant unterschieden. Insbesondere waren in einigen - aber definitiv der Minderheit - der Versuche die Aufrufe mit der Fehlerbehandlung sogar schneller, was hier der Unvollkommenheit der Testumgebung zuzuschreiben ist. Fakt ist aber, dass meine Messung dennoch der Aussage eines 10-fachen Performance-Verlustes widerspricht, denn dann hätte das Skript mit "use-strict" deutlich mehr Zeit verbrauchen müssen.
Jörg Reinholz