Phil: Quelltext Optimierung Brainstorming

Hallo da draußen.

Ich möchte hiermit nochmal zu einem Brainstorming anregen, wie man seinen Quelltext/code optimieren kann.
Schreibweise, Querys, Schleifen, dynamisch oder nicht dynamisch u.s.w.
Wie läufts schneller.

Diesmal zählt jedes Fitzelchen. Ich will nicht hören das man wohl erstmal nach der Hardware gucken soll. Das wissen die meisten. Es geht einfach um den Quelltext.

Meine erste Frage dazu: Was bringt die verwendung von einfachen ' statt " noch in PHP5? Was in PHP4 noch half wird jetzt wohl weniger bringen denk ich. Aber selbst wenns nur eine Millionstel Sekunde ist - es ist schneller.

Von daher schreibt eure Meinung, Tipps&Tricks, Links und eure Gedanken über Optimierung im Quelltext hierrein.

mfg

Phil Z.

  1. hi,

    Diesmal zählt jedes Fitzelchen.

    *Gähn*

    Wie läufts schneller.

    Aus welcher realen Situation ergibt sich diese Fragestellung?

    Nein, zum erneuten Rumtheoretisieren bzgl. dieses Themas habe ich keine Lust.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Nein, zum erneuten Rumtheoretisieren bzgl. dieses Themas habe ich keine Lust.

      Der Mann müsste eigentlich von den Hochsprachen weg auf Assembler umgeschult werden.

  2. Ich möchte hiermit nochmal zu einem Brainstorming anregen, wie man seinen Quelltext/code optimieren kann.

    Gut.

    Wie läufts schneller.

    "Optimieren" heisst erst einmal besser organisieren und nur wenn Performanceengpässe gemessen werden konnten, ist üblicherweise an eine dementsprechende Optimierung zu denken.

    Diesmal zählt jedes Fitzelchen.

    Finetuner? ;)

    Meine erste Frage dazu: Was bringt die verwendung von einfachen ' statt " noch in PHP5?

    Na, was passiert da wohl, wird bei Verwenung von """ vielleicht der String interpretiert und bei Verwendung von "'" nicht?

    Aber selbst wenns nur eine Millionstel Sekunde ist - es ist schneller.

    Speed-Fanatiker? Motorsportfan?

    Von daher schreibt eure Meinung, Tipps&Tricks, Links und eure Gedanken über Optimierung im Quelltext hierrein.

    Quelltexte sind dahingehend zu optimieren, dass diese entweder direkt objektorientiert sind oder indirekt, ween es die Programmiersprache nicht unterstützt oder wenn der Programmierer kein Bock auf OOP hatte.

    1. Hi,

      Wie läufts schneller.
      "Optimieren" heisst erst einmal besser organisieren und nur wenn Performanceengpässe gemessen werden konnten, ist üblicherweise an eine dementsprechende Optimierung zu denken.

      genau dieses Denken führt IMHO dazu, dass für viele Aufgaben auch schnelle, hochgezüchtete Maschinen oft noch als "zu langsam" oder "nicht aureichend leistungsfähig" eingestuft werden. Wäre die Faulheit vieler Programmierer nicht so ausgeprägt, käme man für viele Einsatzgebiete mit deutlich leistungsschwächeren und weniger stromhungrigen, weniger Abwärme produzierenden Maschinen aus, ohne dass dies gleich mit einer Performanceeinbuße einhergehen müsste - oder ein Rechner könnte das leisten, wofür sonst drei bis vier eingesetzt werden.

      Quelltexte sind dahingehend zu optimieren, dass diese entweder direkt objektorientiert sind oder indirekt, ween es die Programmiersprache nicht unterstützt oder wenn der Programmierer kein Bock auf OOP hatte.

      Das mit der Objektorientierung ist IMHO Geschmackssache. Prozedural geschriebener Code ist meistens sehr viel leichter nachzuvollziehen und damit auch leichter zu warten und zu pflegen. Voraussetzung ist natürlich eine klare Strukturierung und Gliederung. Wenn du das bereits als objektorientierten Ansatz siehst, stimme ich dir allerdings zu.

      Trotzdem würde ich sagen: Quelltexte sind als erstens dahingehend zu optimieren, dass sie klar verständlich sind. An zweiter Stelle sehe ich dann die Effizienz der Programmausführung. Dazu gehört, dass man als Programmierer z.B. redundante Operationen vermeidet[1], konstante Ausdrücke aus Schleifen heraushält[2], geeignete Datentypen und Operationen verwendet[3], kleine und auf einen bestimmten Zweck zugeschnittene Funktionen/Module gegenüber eierlegenden Wollmilchsäuen vorzieht[4].

      Lange vor diesen Detailfragen sollte allerdings die Wahl einer geeigneten Programmiersprache stehen. Muss es eine Scriptsprache wie z.B. PHP sein? Brauche ich deren Flexibilität und Möglichkeiten, so dass ich dann die Schwerfälligkeit und den Overhead akzeptieren will? Oder doch lieber ein schlankes Programm klassisch in C schreiben und compilieren? Oder noch besser, kleine Teilaufgaben der Performance wegen sogar in Assembler?

      Schönen Sonntag noch,
       Martin

      [1] Ungünstig:
          if (bedingung)
             $a = true;
          else
             $a = false;
        + Besser:
          $a = (bedingung);
      [2] Ungünsig:
          for ($i=0; $i<0x4000; $i++)
           { $k = 3*$basis+4 + $i;
             ...
           }
        + Besser:
          $offset = 3*$basis+4;
          for ($i=0; $i<0x4000; $i++)
           { $k = $offset + $i;
             ...
           }
      [3] Ungünstig:
          $u = pow($v, 2);
        + Besser:
          $u = $v * $v;
      [4] Ungünstig:
          Einfache Stringersetzung mit RegExp
        + Besser:
          Speialisierte Funktionen wie str_replace()

      --
      Wer im Glashaus sitzt, sollte sich nur im Dunkeln ausziehen.
      1. Wie läufts schneller.
        "Optimieren" heisst erst einmal besser organisieren und nur wenn Performanceengpässe gemessen werden konnten, ist üblicherweise an eine dementsprechende Optimierung zu denken.
        genau dieses Denken führt IMHO dazu, dass für viele Aufgaben auch schnelle, hochgezüchtete Maschinen oft noch als "zu langsam" oder "nicht aureichend leistungsfähig" eingestuft werden.

        Dennoch bleibt das Denken richtig, kommt es zu den oben beschriebenen Performanceengpässen, dann ist das Framework schuld.   :)

        Wäre die Faulheit vieler Programmierer nicht so ausgeprägt, käme man für viele Einsatzgebiete mit deutlich leistungsschwächeren und weniger stromhungrigen, weniger Abwärme produzierenden Maschinen aus, ohne dass dies gleich mit einer Performanceeinbuße einhergehen müsste - oder ein Rechner könnte das leisten, wofür sonst drei bis vier eingesetzt werden.

        Der faule Programmierer als Naturgegner?   ;)

        Das mit der Objektorientierung ist IMHO Geschmackssache.

        Sehe ich auch so.

        Prozedural geschriebener Code ist meistens sehr viel leichter nachzuvollziehen und damit auch leichter zu warten und zu pflegen. Voraussetzung ist natürlich eine klare Strukturierung und Gliederung. Wenn du das bereits als objektorientierten Ansatz siehst, stimme ich dir allerdings zu.

        Noch einmal: sias

        redundante Operationen vermeidet[1]

        Mag richtig sein, wenn im Rahmen des IF-Blocks nichts Weiteres auszuführen ist.

        , konstante Ausdrücke aus Schleifen heraushält[2]

        Du meinst berechnete Ausdrücke, die konstante Werte zurückgeben, schon klar.

        , geeignete Datentypen und Operationen verwendet[3]

        Die Funktion pow() könnte doch gerade optimiert sein und leistungsfähiger als der gute alte Operator, bei Turbo Pascal gab es zumindest sowas für Stringfunktionen, wenn ich mich richtig erinnere.

        , kleine und auf einen bestimmten Zweck zugeschnittene Funktionen/Module gegenüber eierlegenden Wollmilchsäuen vorzieht[4].

        Ein Plaedoyer gegen reguläre Ausdrücke?! Nee, ich weiss schon wie Dus meinst.   :)

        Oder doch lieber ein schlankes Programm klassisch in C schreiben und compilieren? Oder noch besser, kleine Teilaufgaben der Performance wegen sogar in Assembler?

        Kenn jemanden, der macht seine Website mit kompilierten C-Code - "kleine Teilaufgaben" in Assembler, klar, warum nicht, wenns funzt kann es eine Performancebombe sein.

        VG!

  3. Hi,

    Meine erste Frage dazu: Was bringt die verwendung von einfachen ' statt " noch in PHP5? Was in PHP4 noch half wird jetzt wohl weniger bringen denk ich. Aber selbst wenns nur eine Millionstel Sekunde ist - es ist schneller.

    Schau dir mal diese PHP Benchmarks an, dort taucht u.a. diese Frage auf.

    Gruss, Erwin