2010-11-21 1 views
2

Wie kann ich nutzlose Mikro-Optimierungstechniken erkennen?PHP-Mikrooptimierung

Was sollte vermieden werden?

+0

Mikrooptimierungen sind nutzlos, wenn sie einen Augentropfen darstellen. Es ist sehr gelegentlich sinnvoll, sie in Schleifen zu honorieren, wenn und nur wenn dort riesige Datenstapel verarbeitet werden. – mario

Antwort

9

Jede Optimierung ohne vorherige Messung und Profilierung ist nutzlos.

PHP-Code Profiler:

  • xDebug
  • PHP_Debug
  • time (Manchmal ist es einfach, Engpässe in den Code zu erkennen, ein einfaches echo time() mit)

immer messen, bevor die Optimierung!

3

Schreiben Sie Code, der funktioniert und lesbar ist. Wenn Sie es träge finden, können Sie immer einige profiling tun.

0

Ich mache mich unbeliebt und sagen isset.

Um nach undefinierten Variablen zu suchen, wird häufig isset() in der gesamten Anwendungslogik verwendet. Viele Leute benutzen es jedoch nur mit der Absicht, Hinweise zu unterdrücken. Seine Verwendung trägt selten zur weiteren Prozesslogik bei. Genauer gesagt wird es über @, dem Fehlerunterdrückungsoperator, verwendet. Und das liegt daran, dass es den Mythos @slowness gibt.

Die Sache ist, es ist kein Mythos. Die Verwendung von @ für den Zugriff auf undefinierte Variablen verringert die Verarbeitungsgeschwindigkeit. In meinem sehr unwissenschaftlichen Test tat es so durch 535%. Ich mache es mutig, die Nutzlosigkeit dieser Nummer zu unterstreichen. Denn in realen Anwendungen haben Sie nicht 10 Millionen Stunden, um diese zu messen. (Wie die 13-14% Tokenizer Beschleunigung von 'single' Anführungszeichen hat keinen Einfluss auf die gesamte Skriptlaufzeit.) Ansonsten würde dieser Leistungsnachteil nicht wirklich zeigen. Und deshalb schließe ich, dass der Verzicht auf @ für überlaufende Nutzung von isset auch eine Mikro-Optimierung ist.

+0

Nun, @ kann auch andere Logikfehler neben nicht gesetzten Variablen verbergen. Wenn Sie Ihre Anwendung richtig codieren, sollten Sie selten eine Groß-/Kleinschreibung beachten, wenn eine Variable nicht richtig eingestellt ist. –

+0

@ ist schlecht für viele andere Gründe als einfach langsam zu sein, macht es zu einem Albtraum Debugging. – GordonM

+0

@GordonM: Eigentlich auch nicht. Es ist nicht '@' selbst, was einen merklichen Geschwindigkeitsabfall verursacht, es ist die Benachrichtigungserzeugung. Und außerdem macht Debuggen keinen Albtraum. Sie unterdrückt zu haben tut. (@ -suppressed debug messages kann zurückgeholt werden, isset-supported onces nie) – mario