Sven Rautenberg: Klammersetzung (ich seh grad den Wald vor lauter Bäumen nicht)

Beitrag lesen

Moin!

Wenn's gerade um Operatoren geht, für sowas:

(mysql_num_rows($result) %2 == 1)

d.h um auf gerade/ungerade Zahlen zu testen, leistet der &-Operator gute und vermutlich viel schnellere Dienste:

(mysql_num_rows($result) & 1)

Das ist mein Ernst, obwohl ich PHP eigentlich gar nicht kann. Musste den &-Operator erst nachschlagen...

Deine Lösung mag vielleicht etwas schneller sein, aber definitiv ist sie obskurer, denn sie verbirgt ziemlich effektiv, was sie eigentlich bezwecken soll. Code wird in der Regel _einmal_ geschrieben. Aber danach von vielen Programmierern _sehr häufig_ wieder gelesen. Dieser Lesevorgang sollte so wenig Verwirrung hinterlassen, wie möglich.

Deshalb sollte Codeklarheit bei allen Überlegungen immer oberstes Gebot sein. Vor allem, wenn man PHP programmiert. Denn diese Sprache ist sowieso so langsam im Vergleich zu z.B. C, dass man sich diese blöden Mikro-Optimierungen wirklich schenken kann. Allein durch einen Wechsel der Sprache würde man einige Größenordnungen an Geschwindigkeit gewinnen. Aber darum geht es in der Regel gar nicht.

PHP ist deshalb toll, weil man damit in deutlich kürzerer Zeit zu Ergebnissen kommt, als mit anderen Sprachen. Die Performance mag an diesem Punkt vielleicht noch mies sein, aber immerhin hat man mindestens schon einen Prototypen, mit dem man experimentieren kann.

Facebook basiert komplett auf PHP. Deren aktueller Performance-Kniff ist, dass sie den PHP-Code in einen C++-Code umwandeln, der dann kompiliert wird, noch einen eigenen Webserver dazu bekommt, und als einzelnes ausführbares Programm abläuft - etwa 50% schneller, als das PHP-Original mit allen möglichen Optimierungen wie dem Einsatz von APC... (das haben die Jungs übrigens als Open Source veröffentlicht, nennt sich HipHop - und dürfte bei 90% aller normalen PHP-Sites irrelevant sein, weil der Use-Case von Facebook dort nicht vorliegt).

- Sven Rautenberg