Ausführungsgeschwindigkeit von Variablen und Konstanten

Dieses Thema im Forum "Programmieren allgemein" wurde erstellt von slackfan, 19.01.2008.

  1. #1 slackfan, 19.01.2008
    slackfan

    slackfan König

    Dabei seit:
    18.04.2006
    Beiträge:
    809
    Zustimmungen:
    0
    Ort:
    Bonn
    Hallo,

    ich habe zwei in PHP geschriebene Skripte. In denen eine Variable in einer For-Schleife auf eine Million hochgezählt wird. Einmal wird die Variable mit einer Konstante addiert und einmal mit einer Variable.

    PHP:
    #!/usr/bin/php
    <?php

    define
    (FOO1);
    $bar 0;

    $start microtime(true);
    for(
    $i 0$i 1000000$i++) {
        
    $bar += FOO;
    }
    $end microtime(true);

    $duration $end $start;

    echo 
    "\n".$duration."\n";

    ?>
    und

    PHP:
    #!/usr/bin/php
    <?php

    $foo 
    1;
    $bar 0;

    $start microtime(true);
    for(
    $i 0$i 1000000$i++) {
        
    $bar += $foo;
    }
    $end microtime(true);

    $duration $end $start;

    echo 
    "\n".$duration."\n";

    ?>
    Jetzt habe ich das Phänomen, dass PHP auf meiner Kiste für das Skript mit Variable 0,262 bis 0,271 Sekunden braucht. Beim Skript mit Konstante sind es aber satte 0,392 bis 0,4 Sekunden. Das sind ja immerhin ~50% mehr Rechenzeit!
    Mich würde interessieren, wo die herkommen? Liegt es daran, dass Konstanten nicht mit einem $ eingeleitet werden und der Parser/Interpiler deshalb länger braucht, um die Konstante zu identifizieren?

    cu
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 Wolfgang, 19.01.2008
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hast du das in dieser Reihenfolge nacheinander ausgeführt?
    Dreh die mal um.
    Immerhin ist PHP ja für seine fette Engine bekannt.

    Kann das leider nicht testen, da ich mein etch ohne php betreibe. ;)
     
  4. #3 slackfan, 19.01.2008
    slackfan

    slackfan König

    Dabei seit:
    18.04.2006
    Beiträge:
    809
    Zustimmungen:
    0
    Ort:
    Bonn
    Nein, das sind zwei verschiedene Skripte, die ich getrennt voneinander laufen ließ. Die Ergebnisse waren immer ähnlich.
     
  5. JBR

    JBR Fichtenschonung

    Dabei seit:
    18.03.2007
    Beiträge:
    561
    Zustimmungen:
    0
    Ort:
    Nolop
    test1.php

    Code:
    
    #!/usr/bin/php 
    <?php  
    define(FOO, 1); 
    $bar = 0; 
    for($i = 0; $i < 1000000; $i++) { 
        $bar += FOO; 
    } 
    ?>
    
    
    test2.php
    Code:
    
    #!/usr/bin/php 
    <?php 
    $foo = 1; 
    $bar = 0; 
    for($i = 0; $i < 1000000; $i++) { 
        $bar += $foo; 
    } 
    ?>
    
    
    Code:
    $ time php test1.php
    
    real    0m0.500s
    user    0m0.416s
    sys     0m0.000s
    $ time php test2.php
    
    real    0m0.307s
    user    0m0.300s
    sys     0m0.004s
    $ time php test1.php
    
    real    0m0.418s
    user    0m0.416s
    sys     0m0.004s
    $ time php test1.php
    
    real    0m0.454s
    user    0m0.416s
    sys     0m0.016s
    $ time php test1.php
    
    real    0m0.436s
    user    0m0.404s
    sys     0m0.004s
    $ time php test1.php
    
    real    0m0.448s
    user    0m0.416s
    sys     0m0.008s
    $ time php test1.php
    
    real    0m0.447s
    user    0m0.420s
    sys     0m0.004s
    $ time php test1.php
    
    real    0m0.453s
    user    0m0.420s
    sys     0m0.008s
    $ time php test2.php
    
    real    0m0.329s
    user    0m0.300s
    sys     0m0.004s
    $ time php test2.php
    
    real    0m0.326s
    user    0m0.300s
    sys     0m0.000s
    $ time php test2.php
    
    real    0m0.330s
    user    0m0.300s
    sys     0m0.000s
    $ time php test2.php
    
    real    0m0.321s
    user    0m0.288s
    sys     0m0.008s
    $ time php test2.php
    
    real    0m0.332s
    user    0m0.304s
    sys     0m0.000s
    $ time php test2.php
    
    real    0m0.329s
    user    0m0.304s
    sys     0m0.000s
    $ time php test2.php
    
    real    0m0.328s
    user    0m0.300s
    sys     0m0.004s
    $ time php test2.php
    ^[[A
    real    0m0.329s
    user    0m0.288s
    sys     0m0.004s
    $time php test2.php
    
    real    0m0.329s
    user    0m0.296s
    sys     0m0.004s
    
    ohne Worte
     
  6. #5 slackfan, 19.01.2008
    slackfan

    slackfan König

    Dabei seit:
    18.04.2006
    Beiträge:
    809
    Zustimmungen:
    0
    Ort:
    Bonn
    Okay, bei dir sind die Unterschiede nicht so krass, aber auch vorhanden. Aber wieso?
     
  7. JBR

    JBR Fichtenschonung

    Dabei seit:
    18.03.2007
    Beiträge:
    561
    Zustimmungen:
    0
    Ort:
    Nolop
    Diese Frage kann dir das Studium des PHP-Quelltextes beantworten. Die PHP Dev Mailinglisten werden ebenfalls entsprechende Threads enthalten.
     
  8. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
Thema:

Ausführungsgeschwindigkeit von Variablen und Konstanten

Die Seite wird geladen...

Ausführungsgeschwindigkeit von Variablen und Konstanten - Ähnliche Themen

  1. Linux 4.5 will UEFI-Variablen besser schützen

    Linux 4.5 will UEFI-Variablen besser schützen: Das Löschen bestimmter UEFI-Variablen kann manche Rechner nicht mehr startbar machen. Das kommende Linux 4.5 ergreift Maßnahmen dagegen, die im...
  2. Textdatei zeilenweise in durchnummerierte Variablen schreiben

    Textdatei zeilenweise in durchnummerierte Variablen schreiben: Hi Leute, ich versuche folgendes Problem zu lösen. Ich möchte eine Textdatei einlesen und den Inhalt jeder Zeile in immer eine neue Variable...
  3. mysql Select Abfrageergebnis in unterschiedlichen Variablen sichern

    mysql Select Abfrageergebnis in unterschiedlichen Variablen sichern: Hallo zusammen, es geht um folgenden Teil meiner .sh-Datei: NumberCheck=`mysql $SQL_ARGS "SELECT lkw, Firma FROM adb_group WHERE...
  4. Teil einer Variablen auslesen und in neue Variable schreiben

    Teil einer Variablen auslesen und in neue Variable schreiben: Hallo, ist für Euch bestimmt ganz einfach, aber trotz googlen komme ich nicht auf eine Lösung. In Variable x habe ich stehen: xy,ab Nun möchte...
  5. Inhalt einer Variablen aus Batch an Shellscript übergeben

    Inhalt einer Variablen aus Batch an Shellscript übergeben: Hallo, ich komme einfach nicht drauf. Wie kann ich den Wert aus einer Variablen eines Batches an mein Shellscript übergeben? So? #...