Kommentare zu: In der Tat, diese Zeile PHP bedarf einer Erklär … http://localhost/blah-dev/2011/12/07/in-der-tat-diese-zeile-php-bedarf-einer-erklaer/ Kurz und knapp und blah... Wed, 31 Jul 2013 20:21:22 +0000 hourly 1 http://wordpress.org/?v=3.6 Von: SvOlli http://localhost/blah-dev/2011/12/07/in-der-tat-diese-zeile-php-bedarf-einer-erklaer/comment-page-1/#comment-18231 SvOlli Sun, 11 Nov 2012 13:54:13 +0000 http://localhost/blah-dev/2011/12/07/in-der-tat-diese-zeile-php-bedarf-einer-erklaer/#comment-18231 Nachdem ich das hier gelesen habe wäre ich mir nicht mal so sicher, ob der PHP-Code wirklich ohne Auswirkungen auf das Programm ist:
http://me.veekun.com/blog/2012/04/09/php-a -fractal-of-bad-design/

]]>
Von: Wurstauge http://localhost/blah-dev/2011/12/07/in-der-tat-diese-zeile-php-bedarf-einer-erklaer/comment-page-1/#comment-13933 Wurstauge Thu, 08 Dec 2011 10:14:08 +0000 http://localhost/blah-dev/2011/12/07/in-der-tat-diese-zeile-php-bedarf-einer-erklaer/#comment-13933 if (statusIsNotValid.compareTo( Boolean.FALSE ) != 0) skipValidation = false;

]]>
Von: Nachtwächter http://localhost/blah-dev/2011/12/07/in-der-tat-diese-zeile-php-bedarf-einer-erklaer/comment-page-1/#comment-13928 Nachtwächter Wed, 07 Dec 2011 14:59:44 +0000 http://localhost/blah-dev/2011/12/07/in-der-tat-diese-zeile-php-bedarf-einer-erklaer/#comment-13928 Stimmt, in den meisten IDEs, die ich kennengelernt habe, stellte es sich so dar. Ich bin halt immer noch ein Freund des (meist handgeschriebenen) Makefile und kenne daher die Optionen beim Aufruf des Compilers. Und aus dieser Sicht wird standardmäßig nicht optimiert.

Wer ganz besonders irre ist (oder jedes Fitzelchen Performance braucht), kann die Optimierungen noch viel feiner steuern. Es gibt gefühlte 200 Optionen für jede verdammte Optimierung, und um die sinnvoll einzusetzen, muss man sie auch verstehen. Zum Glück braucht das kaum jemand.

]]>
Von: fritz the cat http://localhost/blah-dev/2011/12/07/in-der-tat-diese-zeile-php-bedarf-einer-erklaer/comment-page-1/#comment-13927 fritz the cat Wed, 07 Dec 2011 09:05:06 +0000 http://localhost/blah-dev/2011/12/07/in-der-tat-diese-zeile-php-bedarf-einer-erklaer/#comment-13927 hi,

»[…]Was spricht dagegen, dass man beim Proggen einfach eine spezielle Ich-will-das-Zeug-debuggen-können-Option setzt und sie fürs fertige Programm dann weglässt[…]«

ich progge aktuell mit flash/flex/air und da ist das so, dass man eine spezielle debug-version hat und später dann ein release-build macht (das u.a. auch schneller läuft).

bin bei anderen umgebungen nicht aktuell, aber würde mich schon sehr verwundern, wenn man das nicht auch so macht.

]]>
Von: tux. http://localhost/blah-dev/2011/12/07/in-der-tat-diese-zeile-php-bedarf-einer-erklaer/comment-page-1/#comment-13924 tux. Wed, 07 Dec 2011 02:53:42 +0000 http://localhost/blah-dev/2011/12/07/in-der-tat-diese-zeile-php-bedarf-einer-erklaer/#comment-13924 Ach, das ist eine um sich greifende Unart: »Wir haben viel Speicher, also belegen wir ihn auch.« Das wird einem irgendwann noch mal Leid tun. Ich habe gern ein paar GB »Puffer« im Speicher. Die Kiste hier hat acht Gigabyte RAM, ich möchte trotzdem nicht, dass ein einziger Prozess die Hälfte davon frisst. Erfahrungen.

]]>
Von: Nachtwächter http://localhost/blah-dev/2011/12/07/in-der-tat-diese-zeile-php-bedarf-einer-erklaer/comment-page-1/#comment-13923 Nachtwächter Wed, 07 Dec 2011 02:09:38 +0000 http://localhost/blah-dev/2011/12/07/in-der-tat-diese-zeile-php-bedarf-einer-erklaer/#comment-13923 Gute Frage. Die Rechenleistung hätten heute auch »kleine« Maschinen, so dass die Übersetzungszeit nicht allzu fies explodieren würde. Jedenfalls nicht in diesem portablen Makroassembler namens C bei »normalen« Optimierungen; im postinkrementierten C sieht das schon wieder ganz anders aus.

Ein guter Grund ist die Möglichkeit, den Code im Debugger noch verstehen zu können. Bei vielen Optimierungen ist es nicht mehr leicht möglich, das Compilat eindeutlich zu einem Statement zuzuordnen. Meine Zeile mit der kompliziert formulierten Zuweisung einer Strukturkomponente auf sich selbst ist schon ein Beispiel, die wird beim Optimieren einfach weggeknetet, weil sie keine Auswirkung hat. Eine andere Optimierung ist das »Ausrollen« von Schleifen mit kurzem Schleifenkörper und einer konstanten Anzahl Durchläufe; die Anweisungen werden einfach hintereinander weg geschrieben, um den Overhead fürs Inkrementieren und Testen der Schleifen einzusparen. Bei ganz fiesen Optimierungen wird sogar die Reihenfolge der Anweisungen geändert, wenn sich dadurch besserer Code erzeugen lässt, und so etwas habe ich schon in den frühen Neunzigern mit dem SAS-Compiler fürn Amiga erlebt. Eine Debugger-Sitzung mit derartigem Code ist bestimmt eine gute Extraportion Kopfschmerz…

Viele Optimierungen haben auch eine in manchen Situationen unerwünschte Nebenwirkung: Sie blähen das Compilat auf. Heute sieht niemand mehr Speicher als eine kritische Ressource an (so wie das unter MS/DOS der Fall war). Der GNU-Compiler kennt die Option mit -OS, die nur solche Optimierungen durchführt, die nicht zu einer Aufblähung des erzeugten Codes führen.

Aber alles das ist kein Argument. Was spricht dagegen, dass man beim Proggen einfach eine spezielle Ich-will-das-Zeug-debuggen-können-Option setzt und sie fürs fertige Programm dann weglässt, weil man das standardmäßig eben nicht will? Eigentlich nichts… außer vielleicht die Gewohnheit, die sich seit den frühen Siebziger Jahren eingeschlichen hat.

Und solchen Gewohnheiten haben wir ja so viele lustige Dinge zu verdanken. Zum Beispiel die Shell-Syntax.

]]>
Von: tux. http://localhost/blah-dev/2011/12/07/in-der-tat-diese-zeile-php-bedarf-einer-erklaer/comment-page-1/#comment-13922 tux. Wed, 07 Dec 2011 01:51:15 +0000 http://localhost/blah-dev/2011/12/07/in-der-tat-diese-zeile-php-bedarf-einer-erklaer/#comment-13922 Warum optimieren Compiler eigentlich nicht per default?

]]>
Von: Nachtwächter http://localhost/blah-dev/2011/12/07/in-der-tat-diese-zeile-php-bedarf-einer-erklaer/comment-page-1/#comment-13921 Nachtwächter Wed, 07 Dec 2011 01:41:36 +0000 http://localhost/blah-dev/2011/12/07/in-der-tat-diese-zeile-php-bedarf-einer-erklaer/#comment-13921 Der blöde Compiler macht mal wieder genau das, was man ihm sagt und erzeugt folgenden Code aus einer Anweisung, die keine Auswirkung hat:

lea 0×10(%esp),%eax
add $0xc,%eax
mov 0×1c(%esp),%edx
mov %edx,(%eax)

Aber schon mit der Option -O2 erkennt er es und optimiert die Anweisung völlig weg. ;)

]]>
Von: tux. http://localhost/blah-dev/2011/12/07/in-der-tat-diese-zeile-php-bedarf-einer-erklaer/comment-page-1/#comment-13920 tux. Wed, 07 Dec 2011 01:40:05 +0000 http://localhost/blah-dev/2011/12/07/in-der-tat-diese-zeile-php-bedarf-einer-erklaer/#comment-13920 Aber verständlich! Wer es nicht versteht, sollte das Programmieren lassen. :P

]]>
Von: Nachtwächter http://localhost/blah-dev/2011/12/07/in-der-tat-diese-zeile-php-bedarf-einer-erklaer/comment-page-1/#comment-13919 Nachtwächter Wed, 07 Dec 2011 01:36:44 +0000 http://localhost/blah-dev/2011/12/07/in-der-tat-diese-zeile-php-bedarf-einer-erklaer/#comment-13919 struct quax a;
*((int *) (((char *) &a) + offsetof (struct quax, quux))) = a.quux;

Nicht mal eine Warnung… ;)

]]>
Von: tux. http://localhost/blah-dev/2011/12/07/in-der-tat-diese-zeile-php-bedarf-einer-erklaer/comment-page-1/#comment-13918 tux. Wed, 07 Dec 2011 01:20:22 +0000 http://localhost/blah-dev/2011/12/07/in-der-tat-diese-zeile-php-bedarf-einer-erklaer/#comment-13918 Warum? Valider Code! :D

]]>