Phil: Was ist schneller?Links normal oder per PHP ausgeben?

Hi Leute,
es handelt sich mal wieder um eine kleine Performancefrage.

Was würde kürzer dauern?
<a href="Startseite.php"></a>
<a href="Startseite.php"></a>
<a href="Startseite.php"></a>
<a href="Startseite.php"></a>
<a href="Startseite.php"></a>

oder

<?php $links = array("Startseite","Fotos","Alben","Communtiy");
foreach ($links as $val){
print "<a href='$val.php'>$val</a> ";
} ?>

Ich weiß e würde sich iweder um 1000-stel sec. handeln. Aber WAS wäre schneller?

mfg

Phil

  1. Das erste natürlich, denn im zweiten Fall muss ja PHP erst den Code erzeugen. Im erten Fall ist der Code schon da und kann direkt ausgegeben werden.

    1. Danke.
      Sicher?
      Also ist es auch ein Performanceunterschied wenn ich das Menü include oder nicht? Wenn ja negativ falls include oder positiv?

      mfg

      Phil

      1. Phil,

        ganz sicher. Includen ist auch langsamer als nicht inkluden.
        Überleg doch mal was im Hintergrund passiert. Der apache kriegt einen Request und soll eine Seite ausliefern. Am schnellsten geht es doch, wenn er ein HTML Dokument von der Platte (oder aus einem Cache) einliest und so wie es ist gleich an den Client ausgibt. Wenn er allerdings ein php Teil darin findet, dann denkt sich der apache oh scheisse, jetzt muss ich erstmal php anschmeissen, dem diese Kommandos geben, die ich im php Teil gefunden habe, seine Ausgabe annehmen und das an der passenden Stelle in das HTML Dokument einsetzen. Erst dann kann ich das ganze an den Client ausgeben.

        Das ist natürlich langsamer, als wenn der apache gar nicht erst mit php reden muss. Aber trotzdem geht es rasend schnell. Du solltest auf jeden Fall deine includes felissig verwenden und wann immer möglich deine Seiten auf einfache Wartbarkeit und Erweiterungsfähigkeit optimieren. Auf die Performance schaut man als letztes, wenn es wirklich so langsam ist dass es stört. Und selbst dann optimiert man zuerst an anderen Stellen wie z.B. apache tunen, Datenbank tunen, Caching einsetzen, auf bessere Hardware setzen und erst gaaaanz zum Schluss wenn gar nichts anderes mehr geht, erst dann optimiert man in einer Software herum. Benutze ruhig deine Includes.

        Gruß,
        Cruz

        Danke.
        Sicher?
        Also ist es auch ein Performanceunterschied wenn ich das Menü include oder nicht? Wenn ja negativ falls include oder positiv?

        mfg

        Phil

        1. echo $begrüßung;

          Includen ist auch langsamer als nicht inkluden.
          Überleg doch mal was im Hintergrund passiert. Der apache kriegt einen Request und soll eine Seite ausliefern. Am schnellsten geht es doch, wenn er ein HTML Dokument von der Platte (oder aus einem Cache) einliest und so wie es ist gleich an den Client ausgibt. Wenn er allerdings ein php Teil darin findet, dann denkt sich der apache oh scheisse, jetzt muss ich erstmal php anschmeissen,

          Bis hier hin ist es richtig.

          dem diese Kommandos geben, die ich im php Teil gefunden habe, seine Ausgabe annehmen und das an der passenden Stelle in das HTML Dokument einsetzen.

          Das ist falsch. PHP bekommt das gesamte Dokument, verarbeitet die darin anthaltenen Anweisungen und gibt das Ergebnis komplett an den aufrufenden Prozess zurück. Der Apache analysiert den Inhalt nicht.

          Erst dann kann ich das ganze an den Client ausgeben.

          [Maßnahmen bei schlechter Performance]

          Schlechter Performance rückt man nicht nach Schema F zu Leibe. Zuerst gilt es zu erkunden, was denn konkret die Flaschenhälse in der Anwendung sind, bevor man sich dazu passende Gegenmaßnahmen sucht.

          echo "$verabschiedung $name";

          1. Schlechter Performance rückt man nicht nach Schema F zu Leibe. Zuerst gilt es zu erkunden, was denn konkret die Flaschenhälse in der Anwendung sind, bevor man sich dazu passende Gegenmaßnahmen sucht.

            Wo steht denn, dass man nach Schema F vorrücken soll? Wenn schon korinthenkacken dann richtig.

            1. echo $begrüßung;

              Schlechter Performance rückt man nicht nach Schema F zu Leibe. Zuerst gilt es zu erkunden, was denn konkret die Flaschenhälse in der Anwendung sind, bevor man sich dazu passende Gegenmaßnahmen sucht.
              Wo steht denn, dass man nach Schema F vorrücken soll? Wenn schon korinthenkacken dann richtig.

              Das kann ich auch. Zitat:

              Und selbst dann optimiert man zuerst an anderen Stellen [...] und erst gaaaanz zum Schluss wenn gar nichts anderes mehr geht, erst dann optimiert man in einer Software herum.

              Das soll kein Ausführungsplan nach Schema F sein?

              Es bleibt dabei: Ohne Ursachenanalyse bleiben sämtliche Maßnahmen nur Rumgepfusche.

              echo "$verabschiedung $name";

              1. Und selbst dann optimiert man zuerst an anderen Stellen [...] und erst gaaaanz zum Schluss wenn gar nichts anderes mehr geht, erst dann optimiert man in einer Software herum.

                Das soll kein Ausführungsplan nach Schema F sein?

                Nö. An welcher Stelle erkennst du denn hier einen Ausführungsplan? Die Aussage dieses Satzes ist, dass man als allerletztes in eine Software reingeht (Sourcecode ist gemeint), wenn einem andere Möglichkeiten (Beispiele sind genannt) nicht zur Verfügung stehen, was ja auch grundsätzlich richtig ist. Weder eine feste Reihenfolge selbst, noch eine Vorgehensweise wie man eine solche herausfindet (z.B. Ursachenanalyse) sind angesprochen worden. Mindestens eine der beiden Themen ist zwingend erforderlich, um den Text einen "Ausführungsplan" nennen zu können.

                Das kann ich auch.

                Kannst du denn wenigstens etwas anderes?

  2. hi,

    Ich weiß e würde sich iweder um 1000-stel sec. handeln. Aber WAS wäre schneller?

    Das dürfte bei einer normalen Applikation vollkommen belanglos sein.

    Und wenn du wirklich an einer Hyper-Applikation arbeiten würdest, bei der das relevant würde - dann solltest du so eine Frage nicht mehr stellen müssen.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
  3. Hallo Phil,

    <a href="Startseite.php"></a>
    <a href="Startseite.php"></a>
    <a href="Startseite.php"></a>
    <a href="Startseite.php"></a>
    <a href="Startseite.php"></a>

    <?php $links = array("Startseite","Fotos","Alben","Communtiy");
    foreach ($links as $val){
    print "<a href='$val.php'>$val</a> ";
    } ?>

    Ich weiß es würde sich iweder um 1000-stel sec. handeln. Aber WAS wäre schneller?

    Du vergleichst hier Äpfel mit Birnen. Da kommmt ja gar nicht das selbe bei raus.

    *SCNR*

    Viele Grüße aus Freiburg,
    Marian

    --
    Microsoft broke Volkswagen's world record: Volkswagen made only 22 million bugs!
    <!--[if IE]><meta http-equiv="refresh" content="0; URL=http://www.getfirefox.com"><[endif]-->