Dennis: Templates - Performanceaufwändig?

Hi @all,

Meine Frage ergibt sich eigentlich schon aus dem Titel. Ich habe mich in letzter Zeit etwas intensiver mit Templates beschäftigt und auch einiges darüber gelesen.
Unter anderem ist aber doch immer mal wieder aufgetaucht, dass Templates performance-raubend wären.

Deshalb würde mich jetzt mal interessieren: Lohnt es sich bei ansonsten komplett statischen Seiten (bis auf LastChange vielleicht) mit Templates zu arbeiten? Macht ihr das? Habt ihr Erfahrungen damit?

Danke schon mal,
MfG, Dennis.

--
Mein SelfCode: ie:{ fl:{ br:^ va:) ls:< fo:) rl:( n4:& ss:) de:> js:( ch:{ sh:( mo:} zu:|
Zufällige Hinweise:
------------------------
- Bitte schickt mir die Antwort als E-Mail an xy@xy.de
Wie bitte? Noe, gibbet net!
  1. Hallo Dennis,

    kannst du uns mal die Seite nennen, wo du das alles gelesen hast das wurde mich schon mal Interesieren.

    Gruß Martin

    1. Hi Martin2004,

      kannst du uns mal die Seite nennen, wo du das alles gelesen hast das wurde mich schon mal Interesieren.

      <zitat>Deshalb müssen Templates nicht für jeden Seitenaufruf performance-intensiv neu geparst werden...</zitat>, siehe auf http://smarty.php.net/manual/de/what.is.smarty.php.

      Außerdem hab ich das schon mal in anderen Foren gelesen, die Beiträge finde ich jetzt aber gerade nicht.

      MfG, Dennis.

      --
      Mein SelfCode: ie:{ fl:{ br:^ va:) ls:< fo:) rl:( n4:& ss:) de:> js:( ch:{ sh:( mo:} zu:|
      Zufällige Hinweise:
      ------------------------
      Fuer die Neulinge: Auf viele Fragen findet man eine
      Antwort im </archiv/>, das man auch durchsuchen kann
      http://suche.de.selfhtml.org/
  2. Tachchen!

    Was genau verstehst du unter einem Template?

    Meine Vorstellung davon ist gänzlich inkompatibel zu deiner Frage.

    Gruß

    Die schwarze Piste

    --
    ie:{ fl:( br:^ va:) ls:# fo:) rl:( n4:& ss:{ de:] js:| ch:? mo:) zu:$
    http://www.smartbytes.de
    1. Hi schwarze,

      Was genau verstehst du unter einem Template?

      Nun, unter einem Template verstehe ich eine Datei, welche sozusagen "HTML mit Platzhaltern" enthält. Per PHP sollen dann die Platzhalter ersetzt werden.
      Ähnlich wie es z.B. auch bei diesem Forum (oder anderen) verwendet wird.

      Meine Vorstellung davon ist gänzlich inkompatibel zu deiner Frage.

      soll heißen?

      MfG, Dennis.

      --
      Mein SelfCode: ie:{ fl:{ br:^ va:) ls:< fo:) rl:( n4:& ss:) de:> js:( ch:{ sh:( mo:} zu:|
      Zufällige Hinweise:
      ------------------------
      Fuer die Neulinge: Auf viele Fragen findet man eine
      Antwort im </archiv/>, das man auch durchsuchen kann
      http://suche.de.selfhtml.org/
      1. Tachchen!

        Nun, unter einem Template verstehe ich eine Datei, welche sozusagen "HTML mit Platzhaltern" enthält. Per PHP sollen dann die Platzhalter ersetzt werden.
        Ähnlich wie es z.B. auch bei diesem Forum (oder anderen) verwendet wird.

        Na schau mal, da kommen wir der Sache ja schon nnäher.

        Rein rechnerisch wäre ein solches "Template" natürlich langsamer, weil
        über die reine Auslieferung des HTML-Codes noch der PHP-Rechenaufwand
        einzubeziehen ist.

        Ob sich das im kaum merklichen oder im echt nervigen Bereich bewegt,
        hängt dann von der Auslastung des Parsers auf deinem Server ab.

        Gruß

        Die schwarze Piste

        --
        ie:{ fl:( br:^ va:) ls:# fo:) rl:( n4:& ss:{ de:] js:| ch:? mo:) zu:$
        http://www.smartbytes.de
        1. Hi schwarze,

          Ob sich das im kaum merklichen oder im echt nervigen Bereich bewegt,
          hängt dann von der Auslastung des Parsers auf deinem Server ab.

          Also von dem Script/Programm, welches die Templates parst? (es gibt ja auch noch den PHP Parser *g*)
          Wäre den eine fertige Template Engine zu bevorzugen, wie bsp. http://smarty.php.net?

          MfG, Dennis.

          --
          Mein SelfCode: ie:{ fl:{ br:^ va:) ls:< fo:) rl:( n4:& ss:) de:> js:( ch:{ sh:( mo:} zu:|
          Zufällige Hinweise:
          ------------------------
          Den Selfcode kann man sich �/]
          1. Tachchen!

            es gibt ja auch noch den PHP Parser *g*

            Original den meinte ich.
            Dass schlechte Skripts zusätzliche Rechenzeit kosten ist zu selbstverständlich.

            Gruß

            Die schwarze Piste

            --
            ie:{ fl:( br:^ va:) ls:# fo:) rl:( n4:& ss:{ de:] js:| ch:? mo:) zu:$
            http://www.smartbytes.de
            1. Hi schwarze,

              es gibt ja auch noch den PHP Parser *g*

              Original den meinte ich.
              Dass schlechte Skripts zusätzliche Rechenzeit kosten ist zu selbstverständlich.

              Gibt es denn da so krasse Unterschiede? Das war mit bis jetzt gar nicht bewusst. Dann dürfte dass doch wohl von der PHP Version abhängig sein, oder?

              MfG, Dennis.

              --
              Mein SelfCode: ie:{ fl:{ br:^ va:) ls:< fo:) rl:( n4:& ss:) de:> js:( ch:{ sh:( mo:} zu:|
              Zufällige Hinweise:
              ------------------------
              Sinnvolles Zitieren: Man zitiert nur Teilsaetze des Vorposters
              auf die man sich bezieht! Nicht einfach alles.
  3. hi,

    Unter anderem ist aber doch immer mal wieder aufgetaucht, dass Templates performance-raubend wären.

    Jo, wenn es darum geht, in einem Text irgendwelche Platzhalter durch einen im Code generierten Text zu ersetzen geht das auf jeden Fall auf die Performanze - das koschd alles Zeit.

    Wie die Zeit beschaffen ist, hängt natürlich von vielen Dingen ab... im Zweifelsfall teste es ganz einfach.

    --Rolf

    1. Hi R0lf,

      Jo, wenn es darum geht, in einem Text irgendwelche Platzhalter durch einen im Code generierten Text zu ersetzen geht das auf jeden Fall auf die Performanze - das koschd alles Zeit.

      Soll dass heißem im Falle von statischen Seiten wären Templates zu bevorzugen?

      MfG, Dennis.

      PS: Seit wann heißt du eigentlich R0lf R0st?

      --
      Mein SelfCode: ie:{ fl:{ br:^ va:) ls:< fo:) rl:( n4:& ss:) de:> js:( ch:{ sh:( mo:} zu:|
      Zufällige Hinweise:
      ------------------------
      Den Selfcode kann man sich �/]
      1. Hi Dennis,

        Jo, wenn es darum geht, in einem Text irgendwelche Platzhalter durch einen im Code generierten Text zu ersetzen geht das auf jeden Fall auf die Performanze - das koschd alles Zeit.

        Soll dass heißem im Falle von statischen Seiten wären Templates zu bevorzugen?

        Na die frage versteh ich nicht ;-) entweder statische Seiten oder Dynamische ...

        Also, ich bevorzuge es, eine Seite komplett per Script auf STDOUT auszugeben, ohne Templates, also ohne Platzhalter - Ersetzungs - Prozesse.

        Viele Grüße, Rolf

        PS: Seit wann heißt du eigentlich R0lf R0st?

        Was ist schon ein Name ;-)

        1. Hi Kind,

          Soll dass heißem im Falle von statischen Seiten wären Templates zu bevorzugen?

          Na die frage versteh ich nicht ;-) entweder statische Seiten oder Dynamische ...

          Gemeint war eine dynamische Seite, mit ansonst statischen/sich nicht änderden Inhalten.

          MfG, Dennis.

          --
          Mein SelfCode: ie:{ fl:{ br:^ va:) ls:< fo:) rl:( n4:& ss:) de:> js:( ch:{ sh:( mo:} zu:|
          Zufällige Hinweise:
          ------------------------
          Sinnvolles Zitieren: Man zitiert nur Teilsaetze des Vorposters
          auf die man sich bezieht! Nicht einfach alles.
        2. Hi Kind,

          PS: Seit wann heißt du eigentlich R0lf R0st?
          Was ist schon ein Name ;-)

          Wenn Du Dein Passwort vergessen hast, lass es Dir von Christian zuschicken. Ansonsten: Welcome back...

          Viele Grüße
          Mathias Bigge

          1. Hallo Mathias,

            PS: Seit wann heißt du eigentlich R0lf R0st?
            Was ist schon ein Name ;-)
            Wenn Du Dein Passwort vergessen hast, lass es Dir von Christian
            zuschicken. Ansonsten: Welcome back...

            Warum von mir?

            http://forum.de.selfhtml.org/cgi-bin/fo_usermanagement?a=sendpw

            Grüße,
             CK

            --
            Der Mund ist das Portal zum Unglück.
            http://wwwtech.de/
            1. Hi Christian,

              Warum von mir?
              http://forum.de.selfhtml.org/cgi-bin/fo_usermanagement?a=sendpw

              ich hätte da mal noch eine Frage:
              Wie speicherst du die Passwörter ab? Bzw. was für ein Verschlüsselungsmechanismus wird da genutzt?
              Einen Hash kanst du ja nicht ziehen, denn das wäre ja nicht wieder entschlüsselbar.

              Wäre nett, wenn du einen in Verwaltungssachen Anfänger mal darüber aufklären würdest ;-)

              MfG, Dennis.

              --
              Mein SelfCode: ie:{ fl:{ br:^ va:) ls:< fo:) rl:( n4:& ss:) de:> js:( ch:{ sh:( mo:} zu:|
              Zufällige Hinweise:
              ------------------------
              Probleme mit Formularen?
              http://tutorial.riehle-web.com hilft weiter.
              1. Hallo Dennis,

                Wie speicherst du die Passwörter ab? Bzw. was für ein
                Verschlüsselungsmechanismus wird da genutzt?

                Gar keiner, die Passwoerter werden plaintext gespeichert. Die Passwoerter
                sind ja nun wirklich nicht sicherheitsrelevant, so dass eine
                Verschluesselung IMHO ueberfluessig ist.

                Grüße,
                 CK

                --
                Wenn gewöhnliche Menschen Wissen erlangen, sind sie weise. Wenn Weise Einsicht erlangen, sind sie gewöhlnliche Menschen.
                http://wwwtech.de/
                1. Hi Christian,

                  Wie speicherst du die Passwörter ab? Bzw. was für ein
                  Verschlüsselungsmechanismus wird da genutzt?

                  Gar keiner, die Passwoerter werden plaintext gespeichert. Die Passwoerter
                  sind ja nun wirklich nicht sicherheitsrelevant, so dass eine
                  Verschluesselung IMHO ueberfluessig ist.

                  Hm, nicht das es mich jetzt stören würde, aber vielleicht nimmt der ein
                  oder andere hier ein Password, welches er auch bei anderen Sachen im Internet
                  nimmt, welches dann durchaus sicherheitsrelevant sind.

                  Natürlich müsste ein "Spion" dann auch noch wissen, mit was für einem
                  Benutzernamen er sich dann hier und da anmelden müsste, aber ich rede ja
                  nur von der Theorie ;-))

                  Danke für die Aufklärung.

                  MfG, Dennis.

                  --
                  Mein SelfCode: ie:{ fl:{ br:^ va:) ls:< fo:) rl:( n4:& ss:) de:> js:( ch:{ sh:( mo:} zu:|
                  Zufällige Hinweise:
                  ------------------------
                  Den Selfcode kann man sich �/]
                  1. Hallo Dennis,

                    Hm, nicht das es mich jetzt stören würde, aber vielleicht nimmt der ein
                    oder andere hier ein Password, welches er auch bei anderen Sachen im
                    Internet nimmt, welches dann durchaus sicherheitsrelevant sind.

                    Tjor, dann hat er Pech gehabt.

                    Natürlich müsste ein "Spion" dann auch noch wissen, mit was für einem
                    Benutzernamen er sich dann hier und da anmelden müsste, aber ich rede ja
                    nur von der Theorie ;-))

                    Und er muesste erstmal auf die Server kommen.

                    Grüße,
                     CK

                    --
                    Echte Hacker benutzen Aexte. (Thomas Walter in de.org.ccc)
                    http://wwwtech.de/
                    1. Hi Christian,

                      Und er muesste erstmal auf die Server kommen.

                      Was, wie ich Dich kenne, nicht ganz leicht werden dürfte *g*

                      Viele Grüße
                      Mathias Bigge

                      1. Hi Mathias,

                        Und er muesste erstmal auf die Server kommen.
                        Was, wie ich Dich kenne, nicht ganz leicht werden dürfte *g*

                        Tja, was die SELFer wohl ohne CK machen würden?

                        Ich kann einfach nicht anders als CK nochmal zu danken,
                        schließlich (noch mal an die Newbies) hat er das Forum ja
                        komplett ehrenamtlich geschrieben - ein Hoch auf CK! ;-)

                        MfG, Dennis.

                        --
                        Mein SelfCode: ie:{ fl:{ br:^ va:) ls:< fo:) rl:( n4:& ss:) de:> js:( ch:{ sh:( mo:} zu:|
                        Zufällige Hinweise:
                        ------------------------
                        - Bitte schickt mir die Antwort als E-Mail an xy@xy.de
                        Wie bitte? Noe, gibbet net!
                        1. Hallo Dennis,

                          Tja, was die SELFer wohl ohne CK machen würden?

                          Ich kann einfach nicht anders als CK nochmal zu danken,
                          schließlich (noch mal an die Newbies) hat er das Forum ja
                          komplett ehrenamtlich geschrieben - ein Hoch auf CK! ;-)

                          Danke fuer die Blumen, aber so eine grosse Sache ist das auch wieder nicht.
                          Wenn ich es nicht machen wuerde, wuerds jemand anders tun.

                          Grüße,
                           CK

                          --
                          Ich bewundere wirklich den Sinn der Bienen für kollektive Verantwortung. Obwohl sich einzelne Bienen hin und wieder bekämpfen, herrscht zwischen Ihnen grundsätzlich ein starkes Gefühl für Eintracht und Zusammenarbeit. Wir Menschen gelten als sehr viel weiter entwickelt, doch mitunter rangieren wir sogar hinter kleinen Insekten.
                          http://wwwtech.de/
                          1. Hi Christian, alter Engländer,

                            das ist selbst mir ein bisschen viel Understatement:

                            Danke fuer die Blumen, aber so eine grosse Sache ist das auch wieder nicht.

                            Eben doch!

                            Wenn ich es nicht machen wuerde, wuerds jemand anders tun.

                            Ich leide seit Jahren unter der heimlichen Angst, dass in intimer Situation eine Frau mit dem Spruch kommen könnte:

                            "Wenn das jeder machen wollte!"

                            Viele Grüße
                            Mathias Bigge

          2. Hi,

            PS: Seit wann heißt du eigentlich R0lf R0st?
            Was ist schon ein Name ;-)
            Wenn Du Dein Passwort vergessen hast, lass es Dir von Christian zuschicken. Ansonsten: Welcome back...

            eine dritte Person hat sich vermutlich den Namen
             Rolf Rost
            gesichert. Sonst wuerde ja alles keinen Sinn machen. Warum nur das Minderste von Rolf annehmen?

            Gruss,
            Ludger

            --
            "The good, the bad and the ugly"
  4. Hallo Dennis,

    Deshalb würde mich jetzt mal interessieren: Lohnt es sich bei ansonsten komplett statischen Seiten (bis auf LastChange vielleicht) mit Templates zu arbeiten? Macht ihr das? Habt ihr Erfahrungen damit?

    Was verstehst Du unter statisch? Du meinst welche, die zwar durch den PHP-Parser gejagt werden, aber insgesamt nur 1 Zeile PHP-Code oder so enthalten? Da lohnen sich Templates sicherlich *NICHT*.

    Sobald Du aber etwas komplexer programmierst (ein Kontaktformular oder auch Gästebuch ist da IMHO schon hinreichend komplex), kann eine Template-Engine durchaus sinnvoll sein. Somit trennst Du »Verarbeitungslogik« und der »Präsentation« und machst Dir das Leben somit später viel leichter. Die Performanceeinbußen bei den meisten Template-Engines halten sich in Grenzen, wobei Du schon damit rechenen musst, dass die Template-Engines selbst einen relativ hohen Prozentsatz der Ausführungszeit für sich selbst beanspruchen (die Frage ist halt hier, ob man die 5ms mehr bei 15ms statt 10ms dann auch merkt oder nicht).

    Viele Grüße,
    Christian

    1. Sobald Du aber etwas komplexer programmierst (ein Kontaktformular oder auch Gästebuch ist da IMHO schon hinreichend komplex), kann eine Template-Engine durchaus sinnvoll sein. Somit trennst Du »Verarbeitungslogik« und der »Präsentation« und machst Dir das Leben somit später viel leichter. Die Performanceeinbußen bei den meisten Template-Engines halten sich in Grenzen, wobei Du schon damit rechenen musst, dass die Template-Engines selbst einen relativ hohen Prozentsatz der Ausführungszeit für sich selbst beanspruchen (die Frage ist halt hier, ob man die 5ms mehr bei 15ms statt 10ms dann auch merkt oder nicht).

      Trennung Applikationslogik und Präsentation: warum ?

      • übersichtlichkeit, wiederverwendung(module)
      • sollen verschiedene personen getrennt arbeiten können (programmierer, designer)
      • wird dies mit templates erreicht ?

      templategedöns ist wiederum ein mischmatsch aus php und html und idr. noch schlechter zu lesen. hier wird oft versucht, durch die brust ins auge etwas mit templates zu erreichen, was sonst einfacher zu lesen wäre, nur um templates einzusetzen.
      wo bleibt hier die trennung von logik und design. trennung bedeutet doch auch, daß verschiedene leute unabhängig gleichzeitig an einer aufgabe arbeiten können.
      welcher personenkreis soll an templates arbeiten?

      wo trennen templates logig und design?

      1. Hallo fk,

        templategedöns ist wiederum ein mischmatsch aus php und html und idr.

        Quatsch.

        Schöne Grüße,

        Johannes

        --
        Das sage ich deshalb, weil ich Hompagebauer bin und Ahnung davon .
        ss:| zu:) ls:[ fo:) de:] va:) ch:) n4:| rl:) br:< js:| ie:{ fl:( mo:}
  5. Hallo, Dennis,

    DeLohnt es sich bei ansonsten komplett statischen Seiten (bis auf LastChange vielleicht) mit Templates zu arbeiten? Macht ihr das?

    eine für kleine bis mittlere Seiten sinnvolle Alternative bestünde in der Verwendung von inkludierten Headern und Footern, die das Layout bestimmen.

    Das Prinzip ist supersimpel und flexibel und - da dafür nicht jedesmal die ganze Seite geparst werden muss - äußerst performant.

    Grüße,

    Sebastian

    1. Hello,

      Das Prinzip ist supersimpel und flexibel und - da dafür nicht jedesmal die ganze Seite geparst werden muss - äußerst performant.

      Inclusion bedeutet aber I/O-Operation. Und die kosten immer am meisten.
      Besser ist, einmal laden, alle Funktionen in der Seite oder EINER includierten Lib zu halten, und dann mit OB_START() die Seite aufbauen und am Ende komplett ausgeben.

      Ist natürlich nur Theorie, denn die Daten einer dynamischen Seite kommen i.d.R. natürlich aus der Datenhaltung.

      Harzliche Grüße aus http://www.annerschbarrich.de

      Tom

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      Nur selber lernen macht schlau
      1. Hi Tom,

        Inclusion bedeutet aber I/O-Operation. Und die kosten immer am meisten.

        also doch besser keine Includes machen?

        Besser ist, einmal laden, alle Funktionen in der Seite oder EINER includierten Lib zu halten, und dann mit OB_START() die Seite aufbauen und am Ende komplett ausgeben.

        Also z.B. alles in eine Klasse und aus der mit Funktionen Sachen wie Footer und Header ausgeben - oder verstehe ich dich jetzt falsch?

        MfG, Dennis.

        --
        Mein SelfCode: ie:{ fl:{ br:^ va:) ls:< fo:) rl:( n4:& ss:) de:> js:( ch:{ sh:( mo:} zu:|
        Zufällige Hinweise:
        ------------------------
        Fuer die Neulinge: Auf viele Fragen findet man eine
        Antwort im </archiv/>, das man auch durchsuchen kann
        http://suche.de.selfhtml.org/
      2. Hallo Tom,

        Inclusion bedeutet aber I/O-Operation. Und die kosten immer am meisten.

        Bitte? 20-40 Millisekunden? Das nennst Du »Kosten«? Wir reden hier von PHP, nicht von Herzschrittmachern.

        Viele Grüße,
        Christian

        1. Hello Christian,

          Inclusion bedeutet aber I/O-Operation. Und die kosten immer am meisten.

          Bitte? 20-40 Millisekunden? Das nennst Du »Kosten«? Wir reden hier von PHP, nicht von Herzschrittmachern.

          Ich habe eigentlich nicht verstanden, was Deine Botschaft ist!

          Wenn jede Inclusion minimal 8ms kostet und man statt einer großen, die dann bei ausreichend Speicher vielleicht ca. 8,8ms kostet (denn der Datentransfer rauscht mit >10MByte/s durch) 10-20 kleinere macht, dann kommt man leicht auf 100 bis 200ms.

          Man muss also abwägen, was besser ist. Kleinste Einheiten sollte man besser zu LIBs zusammenfassen und größere LIBs (> 100kByte) besser vermeiden, und sie so geschickt aufteilen, dass man eben immer nur so 3-4 pro Scriptaufruf benötigt.

          Das kann auch ggf. Redundanzen rechtfertigen.

          Solange man sein Projekt dann noch auf einem Webspace beisammen hält, sind Redundanzen auch noch pflegbar. Wenn man allerdings eine im Internet verteilte Applikation bastelt, wird es sicher kritisch.

          Harzliche Grüße aus http://www.annerschbarrich.de

          Tom

          --
          Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
          Nur selber lernen macht schlau
          1. Hallo Tom,

            Inclusion bedeutet aber I/O-Operation. Und die kosten immer am meisten.

            Bitte? 20-40 Millisekunden? Das nennst Du »Kosten«? Wir reden hier von PHP, nicht von Herzschrittmachern.

            Ich habe eigentlich nicht verstanden, was Deine Botschaft ist!

            Meine Botschaft ware, dass diese 20-40ms nichts ausmachen.

            Wenn jede Inclusion minimal 8ms kostet

            Falsch. Bei mir auf meinem Desktop-System (das überhaupt nicht in Richtung Server optimiert ist) dauert das Einbinden einer leeren Datei ca. 0.000001 Sekunden (entspr. 0.001 ms entspricht 1 µs), das Einbinden von ingsesamt 2 Dateien mit insgesamt 80 KiB dauert ca. 0,00334 s = 3,34 ms. Insofern kann ich Dein Argument nicht wirklich verstehen, selbst wenn man 600 KiB inkludiert, bleibt man noch unter 30ms... Und der Dateizugriff selbst spielt anscheinend keine Rolle, wenn das Einbinden einer leeren Datei 1 µs braucht...

            Und wenn Du jetzt damit ankommst, dass die Dateien nicht immer wie bei mir im Cache liegen: stimmt, allerdings ist es IMHO egal, ob es beim _ersten_ Request nach langer Zeit mal 100ms mehr dauert...

            Viele Grüße,
            Christian

            1. Hello,

              Falsch. Bei mir auf meinem Desktop-System (das überhaupt nicht in Richtung Server optimiert ist) dauert das Einbinden einer leeren Datei ca. 0.000001 Sekunden (entspr. 0.001 ms entspricht 1 µs),

              Dann sollten wir in Zukunft doch alle auf Deinem Desktop hosten lassen...

              Bei den Zeiten muss das ja spottbillig sein!

              Harzliche Grüße aus http://www.annerschbarrich.de

              Tom

              --
              Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
              Nur selber lernen macht schlau
              1. Hallo Tom,

                Dann sollten wir in Zukunft doch alle auf Deinem Desktop hosten lassen...

                Ich wollte damit nur sagen, dass ein Server, dessen Hardware für diesen Zweck ausgewählt wurde und bei dem keine 90 Programme im Hintergrund laufen, wohl nochmal schneller sein wird, als mein Desktop. Ich kann im Moment leider nur auf meinem Desktop messen.

                Viele Grüße,
                Christian

                1. hallo ihr beiden,

                  ich hab das jetzt auch mal getestet. dazu eine einfache index.php erstellt,
                  die in einer FOR-schleife jeweils 7 verschiedene - noch nicht im cache
                  vorhandene - php-dateien per include einbindet.
                  folgende ergebnisse habe ich erzielt.

                  == LOKAL ==

                  [ include() execution time: 0.000286 sek ]
                  [ include() execution time: 0.00017 sek ]
                  [ include() execution time: 0.00014 sek ]
                  [ include() execution time: 0.000133 sek ]
                  [ include() execution time: 0.000132 sek ]
                  [ include() execution time: 0.000131 sek ]
                  [ include() execution time: 0.000211 sek ]

                  == WEBSPACE ==

                  [ include() execution time: 0.00039699999999998 sek ]
                  [ include() execution time: 0.00017 sek ]
                  [ include() execution time: 0.00013599999999997 sek ]
                  [ include() execution time: 0.00014800000000004 sek ]
                  [ include() execution time: 0.00015000000000004 sek ]
                  [ include() execution time: 0.00014199999999998 sek ]
                  [ include() execution time: 0.00014500000000001 sek ]

                  ==index.php==

                  <?
                  for($i=0;$i<7;$i++) {
                   $start = microtime();
                   include("include$i.php");
                   echo "<br>[ include() execution time: " . (microtime() - $start) . " sek ]\n";
                   $start = null;
                  }
                  ?>

                  == include dateien (0-6) ==

                  <?
                  $opt = "suuuper schnell";
                  ?>

                  == Fazit ==
                  keins. denn es hängen mehrere faktoren davon ab, die ich nicht alle miteinbezogen habe / ein-
                  beziehen kann ;-)

                  dennoch ist es m.E. schirr wurscht und die, für die includes aufgebrachte, zeit einfach nicht
                  signifikant, hinsichtlich der tatsache, dass man sowieso mit php programmiert - wo ladezeiten
                  an der tagesordnung stehen und das web selbst auch noch seinen teil dazu beiträgt.

                  mfg
                  comunicout

                  1. Hallo comunicout,

                    dennoch ist es m.E. schirr wurscht und die, für die includes aufgebrachte, zeit einfach nicht signifikant,

                    Genau das wollte ich sagen. ;-)

                    Viele Grüße,
                    Christian

                    1. Hi Christian,

                      dennoch ist es m.E. schirr wurscht und die, für die includes aufgebrachte, zeit einfach nicht signifikant,

                      Genau das wollte ich sagen. ;-)

                      Danke, dass sagt mir im Prizip, dass ich durchaus mal das eine oder andere includen kann ;-)

                      MfG, Dennis.

                      --
                      Mein SelfCode: ie:{ fl:{ br:^ va:) ls:< fo:) rl:( n4:& ss:) de:> js:( ch:{ sh:( mo:} zu:|
                      Zufällige Hinweise:
                      ------------------------
                      - Bitte schickt mir die Antwort als E-Mail an xy@xy.de
                      Wie bitte? Noe, gibbet net!
                2. Hello,

                  Ich wollte damit nur sagen, dass ein Server, dessen Hardware für diesen Zweck ausgewählt wurde und bei dem keine 90 Programme im Hintergrund laufen, wohl nochmal schneller sein wird, als mein Desktop. Ich kann im Moment leider nur auf meinem Desktop messen.

                  Und ich wollte damit sagen, dass das Unterschreiten von 4ms Zugriffszeit im Serverbetrieb (also mit vielen aktiven Benutzern) schon ganz schön schwer ist, wenn die Harddisk schon 6,5ms Zugriffszeit hat.

                  Man sollte also auch so fair sein, und  die paar Testdateien auch aus tausenden vorhandenen im Random-Access auswählen beim Testen.

                  Harzliche Grüße aus http://www.annerschbarrich.de

                  Tom

                  --
                  Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                  Nur selber lernen macht schlau
                  1. Hallo Tom,

                    Und ich wollte damit sagen, dass das Unterschreiten von 4ms Zugriffszeit im Serverbetrieb (also mit vielen aktiven Benutzern) schon ganz schön schwer ist, wenn die Harddisk schon 6,5ms Zugriffszeit hat.

                    Die Dateien werden ja auch gecachet. Und falls sie gerade nicht im Cache sind, dauert es beim _ersten_ Zugriff halt etwas länger. Und bei den Mengen an Speicher, die heutzutage in Servern verbaut sind, können die eine ganze Menge im Cache halten.

                    Viele Grüße,
                    Christian

                    1. Hello,

                      Die Dateien werden ja auch gecachet. Und falls sie gerade nicht im Cache sind, dauert es beim _ersten_ Zugriff halt etwas länger. Und bei den Mengen an Speicher, die heutzutage in Servern verbaut sind, können die eine ganze Menge im Cache halten.

                      Aber nicht für jeden User.

                      Wenn ein typischer Server vielleicht vier Gigabyte RAM hat, dann hat er aber auch vier Terabyte Harddisk-Array. Und da kann der eben maximal nur 1/oo speichern (Milchmädchenzahl). Dann könnte er aber den Programmen keinen Platz mehr zur Verfügung stellen. Also wird er höchstens  1/ooo cachen können, also jede 10.000ste Datei.

                      Deine Werte vom Desktop sind also ein Trugschluss.

                      Harzliche Grüße aus http://www.annerschbarrich.de

                      Tom

                      --
                      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                      Nur selber lernen macht schlau
                      1. Hallo Tom,

                        Wenn ein typischer Server vielleicht vier Gigabyte RAM hat, dann hat er aber auch vier Terabyte Harddisk-Array.

                        4 TB Festplatten? Bitte? Und selbst wenn: soll der gesamte Inhalt überhaupt gecacht werden? Wie groß ist denn von den 4 TB denn wirklich die Menge an Daten, die über das Web ausgeliefert wird? IMHO sollte diese durchaus ins RAM passsen - selbst wenn "nur" 1 GiB verbaut sind.

                        Du führst sehr viele Argumente an (die IMHO nicht unbedingt schlüssig s), ohne jedoch einen praktischen Beweis zu liefern. Ich habe einen Benchmark bezüglich der Includes durchgeführt - wenn Du der Auffassung bist, dass viele Includes spürbar langsamer sind, als nur ein paar, dann führe bitte selbst einen Benchmark durch. Ich bezweifle ja nicht, dass mehrere Includes nicht langsamer sind, allerdings bin ich der Auffassung, dass der Geschwindigkeitsnachteil von ein paar Mikorsekunden (µs) nicht ins Gewicht fällt. Solange Du keine Handfesten Zahlen hast, die Deine These untermauern, dass der Geschwindigkeitsunterschied doch eine Rolle spielt, sind Deine ganzen Argumente nur leere Behauptungen.

                        Ich bezweifle ja nicht, dass es Quatsch ist, eine Million Dateien einzubinden, aber eine saubere Aufteilung in Dateien durch Performanceüberlegungen aufzugeben, die bei PHP sowieso keine Rolle spielen, halte ich für definitiv den falschen Ansatz. Wenn es Dir um so geringe Geschwindigkeitsbeträge geht, dann programmiere Deine Webanwendungen in C und nutze die FastCGI-Schnittstelle.

                        Viele Grüße,
                        Christian

                        1. Hello,

                          Du führst sehr viele Argumente an (die IMHO nicht unbedingt schlüssig s), ohne jedoch einen praktischen Beweis zu liefern. Ich habe einen Benchmark bezüglich der Includes durchgeführt - wenn Du der Auffassung bist, dass viele Includes spürbar langsamer sind, als nur ein paar, dann führe bitte selbst einen Benchmark durch. Ich bezweifle ja nicht, dass mehrere Includes nicht langsamer sind, allerdings bin ich der Auffassung, dass der Geschwindigkeitsnachteil von ein paar Mikorsekunden (µs) nicht ins Gewicht fällt. Solange Du keine Handfesten Zahlen hast, die Deine These untermauern, dass der Geschwindigkeitsunterschied doch eine Rolle spielt, sind Deine ganzen Argumente nur leere Behauptungen.

                          Du hast keinen Benchmark durchgeführt, sondern einen Betrugsversuch.

                          Wenn ich mit als einziger Fahrgast im Überlandbus den Berg hinaufchauffiert werde (was hier täglich vorkommt), dann schafft der Bus das in Nullkommanix, wenn aber im 13:09 alle Schulkinder und die zufällige Wandergruppe mit drinsitzen, muss das arme Teil ganz schön schwitzen und man kann froh sein, wenn der die 13 bis 19% Steigung überhaupt noch hochkommt.

                          Solltest Du Deinen Fehler immer noch nicht sehen, fangen wir nochmal von vorne an.

                          Harzliche Grüße aus http://www.annerschbarrich.de

                          Tom

                          --
                          Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                          Nur selber lernen macht schlau
  6. Hi,

    PHP selbst ist bereits eine Art "Template"-Engine, weil PHP in HTML eingebettet werden kann und ein Parser diese Bereiche interpretiert. Einfache Template sind schon mit wenigen Include-Sequenzen möglich, wobei oft Header, Nav u. Footer in eine ansonsten statische Seite eingebunden werden.

    Eine komplexe Engine wie Smarty zu verwenden, macht vielleicht bei großen Web-Applikationen Sinn, bei kleinen Projekten und einfachen Webseiten meistens nicht, da ist es oft unnötig und overkill. Smarty ist trotz Caching im Vergleich zu einer Lösung mit wenigen Scriptzeilen (sofern möglich) wie mit Kanonen auf Spatzen zu schießen, auch was die Performance angeht.

    Tipp: Wenn überhaupt eine Template-Engine, dann versuche es erstmal mit wenigen PHP-Includes oder einer "leichten" Template-Maschine wie "Savant" (Goole informiert)!

    MfG
    Danny

    1. Hi Danny,

      PHP selbst ist bereits eine Art "Template"-Engine, weil PHP in HTML eingebettet werden kann und ein Parser diese Bereiche interpretiert. Einfache Template sind schon mit wenigen Include-Sequenzen möglich, wobei oft Header, Nav u. Footer in eine ansonsten statische Seite eingebunden werden.

      Ja, so mache ich es auf bei einem (weiteren) privaten Webproject von mir, welches noch nicht publiziert ist.

      Eine komplexe Engine wie Smarty zu verwenden, macht vielleicht bei großen Web-Applikationen Sinn, bei kleinen Projekten und einfachen Webseiten meistens nicht, da ist es oft unnötig und overkill. Smarty ist trotz Caching im Vergleich zu einer Lösung mit wenigen Scriptzeilen (sofern möglich) wie mit Kanonen auf Spatzen zu schießen, auch was die Performance angeht.

      Ok, danke, das hilft mir weiter ;-)

      Tipp: Wenn überhaupt eine Template-Engine, dann versuche es erstmal mit wenigen PHP-Includes oder einer "leichten" Template-Maschine wie "Savant" (Goole informiert)!

      Hm, ich dachte wenn dann eher daran, mit in PHP eine Template Klasse zu schreiben, sodass ich per Funktionen an Stellen in Template bestimte Sachen einfügen kann - jedenfalls so oder ähnlich. *g*

      MfG, Dennis.

      --
      Mein SelfCode: ie:{ fl:{ br:^ va:) ls:< fo:) rl:( n4:& ss:) de:> js:( ch:{ sh:( mo:} zu:|
      Zufällige Hinweise:
      ------------------------
      - Bitte schickt mir die Antwort als E-Mail an xy@xy.de
      Wie bitte? Noe, gibbet net!
    2. Hallo Danny,

      Smarty ist trotz Caching im Vergleich zu einer Lösung mit wenigen Scriptzeilen (sofern möglich) wie mit Kanonen auf Spatzen zu schießen, auch was die Performance angeht.

      Nicht wirklich. Smarty wandelt das ganze ja intern in PHP-Code um, der durchaus sehr Performant läuft. Und die Konvertierung findet nur statt, wenn die Template-Datei neuer ist, als das "Kompilat".

      Klar, wenn Du zig verschachtelte {foreach} hast, wird's nicht mehr performant, aber im Normalfall ist Smarty eigentlich sehr schnell - zumindest meiner Erfahrung nach.

      Viele Grüße,
      Christian

      1. Hallo Christian,

        Nicht wirklich.

        Das mag sein, aufgrund Deiner Erfahrung glaube ich Dir das gern. Aber wenn ich an die Menge Code denke, die Smarty mit sich bringt, finde ich es bei kleinen Projekten und privaten Webseiten etwas übertrieben, wenn das Smarty-Paket allein schon umfangreicher ist als der gesamte Code des eigentlichen Projektes. Und wenn es auch anders, bzw. simpler geht, warum dann unnötigen Ballast mitschleifen? Außerdem hat Smarty einen speziellen Aufbau u. Syntax, die man erst verstehen und anwenden lernen muß.

        MfG
        Danny

        1. Hi Danny,

          Das mag sein, aufgrund Deiner Erfahrung glaube ich Dir das gern. Aber wenn ich an die Menge Code denke, die Smarty mit sich bringt, finde ich es bei kleinen Projekten und privaten Webseiten etwas übertrieben, wenn das Smarty-Paket allein schon umfangreicher ist als der gesamte Code des eigentlichen Projektes. Und wenn es auch anders, bzw. simpler geht, warum dann unnötigen Ballast mitschleifen? Außerdem hat Smarty einen speziellen Aufbau u. Syntax, die man erst verstehen und anwenden lernen muß.

          Ok, Danke - ich bin wieder etwas schlauer geworden ;-)

          MfG, Dennis.

          --
          Mein SelfCode: ie:{ fl:{ br:^ va:) ls:< fo:) rl:( n4:& ss:) de:> js:( ch:{ sh:( mo:} zu:|
          Zufällige Hinweise:
          ------------------------
          Den Selfcode kann man sich �/]