Performance Frage

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

  • Performance Frage

    Hallo,

    gibt es einen Performance unterschied zwischen den folgenden Varianten? Wie compiliert PHP die if Schleife generell? Kann mir jemand auf diesem Gebiet weiterhelfen?

    Variante 1:

    index.php
    PHP-Code:
    if($foo){
    include 
    'foobar.php';

    foobar.php
    PHP-Code:
    <?PHP
    //hier kommt ein langer quelltext
    ?>

    Variante 2:

    index.php
    PHP-Code:
    include 'foobar.php'
    foobar.php
    PHP-Code:
    <?PHP
    if($foo){
    //hier kommt ein langer quelltext
    }
    The Human Mirror - Mein Blog!
    www.sonicsense.de - The future of music!

  • #2
    Ich würde ja in meinem jugendlichen Leichtsinn direkt mal sagen, daß es immer schneller ist, wenn eine Datei nicht erst inkludiert werden muss, um eine Bedingung zu überprüfen. Aber ich lasse mich auch gerne vom Gegenteil überzeugen.
    Happiness is an empty error log

    Kommentar


    • #3
      Wie oft würde den ein

      PHP-Code:
      if($foo){
      include 
      'foobar.php';

      Und wie groß wäre solch eine Datei.

      Weil wenn du sowas öfters im Script machst würd ich Dir halt die include Anweisung empfehlen. Weil es wird wirklich nur includet wenn die if Abfrage wahr ist. Sprich es gibt weniger zu parsen und das Script wird schneller bearbeitet .

      Solltest Du nur ein bis zwei mal includen koenntest du es auch direkt in die Datei schreiben.

      Kommentar


      • #4
        Die Größe der zu includeden Datei variert, allerdings werden einige if, bzw includes verwendet. 4+
        The Human Mirror - Mein Blog!
        www.sonicsense.de - The future of music!

        Kommentar


        • #5
          du solltest wirklich mal öfter ins manual schauen - dann wüsstest du jetzt z.b. schon, dass deine erste variante nicht das bewirkt, was du vermutlich möchtest:
          Beispiel 11-6. include() und bedingte Blöcke
          PHP-Code:
          <?php

          // Das ist FALSCH und führt nicht zum gewünschten Ergebnis.
           

          if ($bedingung)
             include 
          $datei;
          else
             include 
          $andere_datei;


          // Das ist KORREKT.
          if ($bedingung) {
             include 
          $datei;
          } else {
             include 
          $andere_datei;
          }

          ?>

          und, ebenfalls zu beachten (je nach PHP-version), das unterschiedliche verhalten von include und require in solch einem fall:
          Anmerkung: Für frühere Versionen als PHP 4.0.2 gilt folgendes: require() wird immer versuchen die Zieldatei zu lesen, selbst wenn die Zeile in der die Anweisung steht, nie ausgeführt wird. Eine bedingte Anweisung hat keine Auswirkungen auf require(). Wenn jedoch die Zeile in der require() steht, nie ausgeführt wird, wird auch der Code der Zieldatei nie ausgeführt werden. Ähnliches gilt für Schleifenstrukturen, diese beeinflussen das Verhalten von require() nicht. Obwohl der Code, der in der Zieldatei enthalten ist, zur Schleife gehört, wird require() selbst nur einmal ausgeführt.
          I don't believe in rebirth. Actually, I never did in my whole lives.

          Kommentar


          • #6
            Ich habe meine beiden obigen Varianten getestet und sie führen beide zu dem ergebnis das ich haben will.

            Die Frage ist nur, welche schneller.
            The Human Mirror - Mein Blog!
            www.sonicsense.de - The future of music!

            Kommentar


            • #7
              Ich kann dir zwar deine Frage nicht beantworten .. aber du kannst es ja einfach selbst austesten:

              microtime() sollte dir dabei ganz gute Dienste leisten ...
              [color=red]Geht nicht[/color] ist keine Fehlermeldung

              Kommentar


              • #8
                Jo stimmt, ich werde mal ein paar testdurchläufe machen.
                The Human Mirror - Mein Blog!
                www.sonicsense.de - The future of music!

                Kommentar

                Lädt...
                X