Tag archive: Schaden

Langzeitaufnahme einer Straße mit vorbeifahrenden Autos, deren Scheinwerfer lange Lichtspuren ziehen.

(Mikro-)Optimierungen

Es gibt dutzende, wenn nicht sogar hunderte oder tausende, Wege eine Anwendung performanter zu gestalten. Einer der meistgenutzten Wege ist die Optimierung des Codes. Hierbei gibt es natürlich einige sehr interessante und gute Ansätze, aber auch viele, die die Wartungsfähigkeit des Codes einschränken oder schlichtweg nur minimale Gewinne bringen.

Vorweg wollen wir uns jedoch mit der Frage beschäftigen, ob Optimierungen wirklich nötig sind. Wenn eine Anwendung in einer für den Nutzer zumutbaren Zeit reagiert sollte man sich keine Gedanken machen hier noch etwas zu verbessern. Ebenso sollte man sich keinen unnötigen Aufwand zumuten, wenn sich das Problem durch Aufstocken der Hardware lösen lässt. Meist bringt das mehr und kommt günstiger. Man sollte jedoch dringend etwas unternehmen, wenn sich die Hardware sowieso schon auf einem Maximallevel befindet und diese an ihre Grenzen stößt.

Der übliche Weg ist dann mithilfe eines Profilers die Stellen im Code zu finden, die die Anwendung ausbremsen. Sobald man sie gefunden hat macht man sich Gedanken, was man verbessern kann. Beispiele hierfür sind weniger Datenbankabfragen ausführen, Ergebnisse zu cachen, Statements optimieren, etc.

Was man jedoch tunlichst vermeiden sollte sind Mikro-Optimierungen. In PHP gibt es hierfür einige tolle Beispiele, z.B. Strings in einfache Hochkommata schreiben, Prekrement statt Postkrement verwenden, kürzere Variablennamen zu verwenden, usw. Ich persönlich habe mir zwar einige Sachen davon angewöhnt, da es nie schaden kann hier und da eine tausendstel Millisekunde zu sparen, jedoch bringen diese Optimierungen meistens keine Verbesserung im Gegensatz zum vorherigen Stand. Viel wichtiger ist es seinen Code nochmal zu überdenken und alternative Methoden zu finden, die die Ausführung beschleunigen.

Irgendwie habe ich gerade das Gefühl, dass ich was komplett anderes geschrieben habe als ich ursprünglich wollte, aber die wichtigste Message habe ich genannt und darauf kommt es an. Übrigens gibt es auch bei PHP hates me einen Artikel dazu.

Ein Mitarbeiter eines Datacenters bei der Arbeit zwischen zwei Server-Reihen.

Was passiert wenn…

Gehen wir mal vom schlimmsten Fall aus. Es bricht ein Feuer aus. Die Löschanlage ist defekt und die Schutztüren schließen sich nicht. Das Feuer breitet sich aus und bald brennt jeder Server. Zusätzlich greift das Feuer auf die Dieselaggregate über, diese explodieren und das Gebäude stürzt zusammen. Und natürlich schafft es die Feuerwehr nicht das Feuer aufzuhalten, sonst hätten wir ja kein Worst-Case-Szenario.

Continue reading