Ich entwickele gerade ein etwas umfangreicheres PHP-Skript, das verschiedene komplizierte Funktionen enthält. Zur Zeit arbeitet mir das Skript aber zu langsam, und deswegen wollte ich mir gerade etwas einfallen lassen, um das Skript schneller werden zu lassen.
Also, was ich versucht habe:
(schematisch dargestellt sah mein Skript ursprünglich so aus:
function abc($x) {
$x=d($x);
$x=e($x);
$x=f($x);
return $x;
}
, wobei d($x) und e($x) und f($x) jeweils umfangreiche Funktionen sind, deren Bearbeitung etwa 0,1s kostet.
)
und ich hab jetzt eine Abfrage eingebaut, die erst mal testet, ob die jeweilige Funktion überhaupt durchgeführt werden muß. also sieht das jetzt schematisch etwa so aus:
function abc($x) {
if(testd($x)) $x=d($x);
if(teste($x)) $x=e($x);
if(testf($x)) $x=f($x);
return $x;
}
so, und da die Funktionen testd, teste, testf alle recht schnell durchgeführt werden, dachte ich jetzt, daß ich in dem Fall, daß z.B. testd($x) true ist, viel Zeit spare, da dann ja die kompliziertere Funktion d($x) nicht ausgeführt werden muß. War aber nicht so.
Also hab ich in mein Programm noch eine Funktion eingebaut, um die einzelnen Zeiten genau zu testen, die für die jeweiligen einzelnen Funktionen benötigt werden. und dieses Programm zeigte mir recht eindeutig, daß mein PHP-Server trotzdem auch dann noch längere Zeit mit der Funktion d($x) verbringt, wenn testd($d) false ist. Das heißt, scheinbar wird die Funktion dann trotzdem noch ausgewertet..
Also, meine Frage ist jetzt: Wie kann ich PHP davon abhalten, Zeit mit der Berechnung der Funktion d($x) zu verbringen?
Danke schon mal im Voraus für Antworten.
Also, was ich versucht habe:
(schematisch dargestellt sah mein Skript ursprünglich so aus:
function abc($x) {
$x=d($x);
$x=e($x);
$x=f($x);
return $x;
}
, wobei d($x) und e($x) und f($x) jeweils umfangreiche Funktionen sind, deren Bearbeitung etwa 0,1s kostet.
)
und ich hab jetzt eine Abfrage eingebaut, die erst mal testet, ob die jeweilige Funktion überhaupt durchgeführt werden muß. also sieht das jetzt schematisch etwa so aus:
function abc($x) {
if(testd($x)) $x=d($x);
if(teste($x)) $x=e($x);
if(testf($x)) $x=f($x);
return $x;
}
so, und da die Funktionen testd, teste, testf alle recht schnell durchgeführt werden, dachte ich jetzt, daß ich in dem Fall, daß z.B. testd($x) true ist, viel Zeit spare, da dann ja die kompliziertere Funktion d($x) nicht ausgeführt werden muß. War aber nicht so.
Also hab ich in mein Programm noch eine Funktion eingebaut, um die einzelnen Zeiten genau zu testen, die für die jeweiligen einzelnen Funktionen benötigt werden. und dieses Programm zeigte mir recht eindeutig, daß mein PHP-Server trotzdem auch dann noch längere Zeit mit der Funktion d($x) verbringt, wenn testd($d) false ist. Das heißt, scheinbar wird die Funktion dann trotzdem noch ausgewertet..
Also, meine Frage ist jetzt: Wie kann ich PHP davon abhalten, Zeit mit der Berechnung der Funktion d($x) zu verbringen?
Danke schon mal im Voraus für Antworten.
Kommentar