am 1. Juli 2009
Nachdem wir wohl alle gestern den ganzen Tag mit PHP 5.3 verbracht haben, wollen wir heute wieder den Ernst des Lebens zelebrieren und mal wieder versuchen was zu lernen. Da ich gestern gefragt wurde, ob ich nicht wieder öfters was über Softwaretechnik oder Architektur schreiben könnte, hab ich mir mal die meine letzten Beiträge angeschaut und da fiel mir echt auf, dass die letzten Themen eher so allgemeines “Bla Bla” waren. Das liegt aber nicht dran, dass ich nicht mehr gerne was über die Tiefen der Softwareentwicklung schreiben will, sondern dass meine Arbeitstage zur Zeit relativ anstrengend sind und nach so einem Tag schreiben sich die seichteren Themen doch einfacher.
Heute geht’s um ein Thema, dass zur Zeit häufiger angesprochen wird. Mikro-Optimierung. Sogar google hat sich in einem Posting drüber ausgelassen und das ging meiner Meinung mal wieder vollkommen in die Hose. Vielleicht erst mal ein Beispiel für Mikro-Optimierung, damit ihr wisst, über was ich rede.
Vor kurzen wurde ich in ein gespräch involviert, in dem drüber diskutiert wurde, ob man lieber print oder echo verwenden soll. Um es noch weiter zu treiben könnte man noch rausfinden, ob der String, den ich per echo ausgeben will über Punkt oder Komma konkateniere. Echo hat einen Geschwindigkeitsvorteil gegenüber Print (oder andersrum). Der ist aber so gering, dass sogar jede Diskussion um dieses Thema teuer ist, als der spätere Benefit. Entwicklern vorzuschreiben, was zu zu verwenden haben, würde den Programmierfluß eines PHPlers durcheinanderbringen und somit eher schaden. Wenn ich mein Leben lang echo verwendet habe, dann sollte ich es auch weiterhin verwenden.
Solche Optimierungen nachträglich einzuführen, ist natürlich noch viel schwachsinniger. Arbeitet lieber am Caching oder nehmt euch einen Profiler zur Hand und sucht die Stellen, die wirklich Optimierung brauchen. Aber auch nur, wenn sie Optimierung benötigen. Ich habe zum Beispiel auch erst einen Wordpress Cache eingeführt, als der Server in die Knie ging. Hätte ich es vorher gemacht, hätte ich mir eine neue Unbekannte geschaffen, die nicht sein muss. Das fällt aber unter das Thema “premature optimization”, dass wir auch bald mal angehen werden.
Wieder zurück zum eigentlichen Thema. Google beschreibt in seinem Artikel “Let’s make the Web faster” eine Optimierungsschraube, die da heißt “Don’t copy variables for no reason“. Bedeutet, dass man nicht extra Werte zuweisen soll, wenn es nicht nötig ist.
$description = strip_tags($_POST['description']);
echo $description;
In vielen Fällen stimmt das natürlich. Sobald ich aber an Übersichtlichkeit gewinnen kann, durch ein solches Kopieren, dann mache ich das. Der nächste Entwickler wird es mir danken. Übersichtlichkeit kann in vielen Fällen gewinnbringender sein, als Performance. Ist zumindest meine Erfahrung und auch die von Martin Fowler, wobei ich glaube, dass er sie vor mir hatte.
Tut euch also den Gefallen und wägt gut ab, an was ihr rumoptimiert. Das erste Langnersche Gesetz der PHP Entwicklung könnte also “Wartbarkeit vor Mikro-Optimierung” lauten.