Zeitproblem bei Funktionen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Zeitproblem bei Funktionen

    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.

  • #2
    Hallo,

    das kann eigentlich sein (folgendes Testprogramm als Beweis ... und nicht weil ich Zweifel an der Funktionsfähigkeit von PHP habe):

    PHP-Code:
    <?php
    function d($x) { echo "IN d($x)<br />\n"; return $x*2; }
    function 
    e($x) { echo "IN e($x)<br />\n"; return $x/2; }
    function 
    f($x) { echo "IN f($x)<br />\n"; return $x+2; }

    function 
    testd($x) { echo "testd($x)<br />\n"; return FALSE; }
    function 
    teste($x) { echo "teste($x)<br />\n"; return TRUE; }
    function 
    testf($x) { echo "testf($x)<br />\n"; return FALSE; }

    function 
    abc($x) { 
    if(
    testd($x)) $x=d($x); 
    if(
    teste($x)) $x=e($x); 
    if(
    testf($x)) $x=f($x); 
    return 
    $x


    abc(10);
    ?>
    erzeugt folgende Ausgabe:
    Code:
    testd(10)
    teste(10)
    IN e(10)
    testf(5)
    carpe noctem

    [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
    [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

    Kommentar

    Lädt...
    X