Dave: Längere Ladezeit?

Hi,
weiss jemand, ob es länger dauert, wenn ich in eine php-if-else-abfrage zwei komplette html-quelltexte ausgebe (einen in if und einen in else), oder ob es besser ist, in die if- und else-dinger einen include auf den quelltext setzte?
Danke
Dave

  1. Ich mache generelle includes. Ist wesentlich übersichtlicher. Schneller? Ich denke das ist das selbe. Du musst dir halt einen schnellen Server suchen.

    V.

  2. Hi,
    weiss jemand, ob es länger dauert, wenn ich in eine php-if-else-abfrage zwei komplette html-quelltexte ausgebe (einen in if und einen in else), oder ob es besser ist, in die if- und else-dinger einen include auf den quelltext setzte?
    Danke
    Dave

    normal heißt es, je mehr text desto länger die Ladezeit. Allerdings ist der Text oder Code oft das wenigste. Kommt also darauf an wie viel es ist.

  3. hoi dave,

    weiss jemand, ob es länger dauert, wenn ich in eine php-if-else-abfrage zwei komplette html-quelltexte ausgebe (einen in if und einen in else), oder ob es besser ist, in die if- und else-dinger einen include auf den quelltext setzte?

    ich würde include empfehlen, nicht wegen der übertragung, sondern weil der PHP-Parser so IMHO performanter arbeiten wird. (er muss nicht unmengen von text durchkauen bei der if-abfrage, sondern lediglich incluieren...)

    Fabian

  4. Moin!

    weiss jemand, ob es länger dauert, wenn ich in eine php-if-else-abfrage zwei komplette html-quelltexte ausgebe (einen in if und einen in else), oder ob es besser ist, in die if- und else-dinger einen include auf den quelltext setzte?

    Ausprobieren!

    Ansonsten würde ich dazu tendieren, dass erstens der Zeitvorteil praktisch kaum meßbar ist, aber wenn, dann die Include-Methode Nachteile hat, weil ja mindestens eine weitere Datei geöffnet werden muss.

    Include selbst sorgt ja nur dafür, dass der extern in der Datei gelagerte Quelltext an die Stelle der include-Direktive geschrieben wird. Der Parser kriegt so oder so den kompletten, langen Quelltext zu fressen. Denk dran: include ist keine Funktion, sondern eine PHP-Direktive, die eine vollkommen andere Bedeutung hat. Include wird nicht als Befehl ausgeführt, wenn der Programmfluss diese Stelle erreicht hat, sondern bereits beim Parsen des Quelltextes.

    Insofern ist der einzige Vorteil von include, dass es den Quelltext vielleicht etwas aufgeräumter und übersichtlicher erscheinen lässt.

    - Sven Rautenberg

    1. Hallo Sven,

      Include selbst sorgt ja nur dafür, dass der extern in der Datei gelagerte Quelltext an die Stelle der include-Direktive geschrieben wird. Der Parser kriegt so oder so den kompletten, langen Quelltext zu fressen. Denk dran: include ist keine Funktion, sondern eine PHP-Direktive, die eine vollkommen andere Bedeutung hat. Include wird nicht als Befehl ausgeführt, wenn der Programmfluss diese Stelle erreicht hat, sondern bereits beim Parsen des Quelltextes.

      Ich widerspreche ungern, wenn ich auch nicht ganz sicher bin. Aber ich glaube mich daran zu erinnern, dass include() in Schleifen und Bedingungen zulässig ist, da der Quellcode BEDINGT geladen wird und nur solange aktiv bleibt, wie die Ausführung es erforderlich macht, also quasi wie eine Prozedur.

      Anders bei require.
      Require würde den Quellcode in einer Schleife dann jedes Mal wieder dazuladen, aber den letzen Durchgang sleider stehen lassen, sodass der Code beim ersten Durchlauf 1x beim 2. Durchlauf 2x usw. ausgeführt werden würde.

      Ich werde das aber nochmal genau nachlesen. Nur Dave sollte das eben auch tun...

      Liebe Grüße

      Tom

      • Sven Rautenberg
      1. Nochmal ein freudiges Hallo zusammen,

        ist wirklich das beste Training hier, dass ich mir vorstellen kann. Man meint, man weiß etwas und ist sich trotzdem unsicher. Also Nachschlagen, ausprobieren, etc.

        include() ist seit php4 ein "reinrassiger" Befehl. Ich kann sogar Rückgabewerte an das aufrufende Script erzeugen, indem ich die return-option benutze.

        Das bedeutet also für die ursprüngliche Frage, dass die Allokationszeit und die Ladezeit des Scriptes in der Include-Datei zur Ausführung hinzukommen. Beim zweiten Mal ist das Script aber gewiss noch im Cache des Dateisystems, hat also keine längere Ladezeit, als wäre es an der passenden Stelle direkt eingebunden. Die Ausführungszeit verlängert sich also um die Zugriffszeit des Dateisystems (der Festplatte -> 8ms). Das ist nicht wenig. Es empfiehlt sich also bei genügend Arbeitsspeicher, alle Daten und Funktionen sofort zu laden, auch wenn man sie nicht benötigt. Das wäre ein Argument für redundanten Code, heute sicher eine sehr unbeliebte Sache. Ich habe iene Zeit lang zeitkritische Applikationen in Assembler erstellt, da hat man immer vor der Frage gestanden.

        Alternative zur Güte:

        Mach eine Funktion daraus. Die wird gleich geladen und braucht nur unwesendtlich mehr Zeit als reduntanter Code.

        Ich hoffe, es hilft Dir weiter.

        LG
        Tom