-
16.08.2012, 18:56 #1
- Registriert seit
- 15.11.2011
- Beiträge
- 6.209
- Blog Entries
- 5
Thanked 9.130 Times in 3.005 Posts[PHP] Performantes Entwickeln
Performanter Code ist in PHP oft auch gleichzeitig sauberer Code.
PHP ist sehr fehlertolerant. Das führt dazu, dass an sich invalider Code zwar richtig ausgeführt wird, durch die Fehlerkorrektur aber wesentlich inperformanter ist.
Beispiel: Zugriff auf einen assoziativen Array
Man deklariert einen assoziativen Array und will mit einzelnen Elementen des Arrays arbeiten (hier ausgeben).
Korrekt würde das so funktionieren
PHP-Code:$userinfo = array("username" => "peter");
echo $userinfo['username'];
PHP-Code:$userinfo = array(username => peter);
echo $userinfo[username];
Grund: Ohne vorangestelltes $ geht PHP von einer Konstante aus. Da es diese nicht gibt, wandelt PHP die Konstante in einen String um und versucht es erneut.
for-Schleife gegenüber foreach bevorzugen
for ist schneller wie foreach.
Bei der for-Schleife sollte man bevorzugt den Pre-Inkrement-Operator (++$var) verwenden.
PHP-Code:for($i = 0; $i < 5; ++$i) {
//...
}
PHP-Code:$c = count($elements);
for($i = 0; $i < $c; ++$i) {
//...
}
PHP-Code:for($i = 0; $i < count($elements); ++$i) {
//...
}
Wenn die Möglichkeit besteht, dass Variablen nicht gesetzt sein könnten (z.B. bei GET oder POST-Parameter) sollte man dies vor dem Zugriff mit isset() prüfen.
Sollte man allerdings nicht bei jeder Variable machen, das wäre wiederum auch inperformant.
Die Ausgabe einer nicht gesetzten Variable braucht ca 6x länger wie die einer gesetzten.
Wird vor der Ausgabe mit isset() und ?: Operator geprüft, dauert die Ausgabe zwar ca doppelt so lange wie ohne Prüfung wenn die Variable existiert - ist aber ca 3x schneller wie ohne Prüfung wenn sie nicht existiert.
Scriptausgabe
Die performanteste Art um statische Texte auszugeben ist echo mit einfachen Anführungszeichen zu verwenden.
PHP-Code:echo 'Bla';
Wobei hier dazugesagt werden muss, dass der Unterschied wirklich sehr gering ist.
Wird bei Gelegenheit erweitert, darf natürlich auch gerne jemand anders tun.
Zu dem Thema gibt es auch recht interessante Seiten wie Optimierung und Tipps zur Beschleunigung von PHP und MySQL » PHP Performance
-
The Following 4 Users Say Thank You to DMW007 For This Useful Post:
-
16.08.2012, 19:20 #2
AW: [PHP] Performantes Entwickeln
Zu erwähnen sei noch das PHP bei doppelten Anführungszeichen nicht nur nach Variablen sucht sondern auch nach beispielsweise \n oder \r. Diese werden mit einfachen Anführungszeichen auch nicht interpretiert.
-
16.08.2012, 19:41 #3
AW: [PHP] Performantes Entwickeln
Habe letztens auf der Arbeit diese Seite gefunden:
Homepage Performance – Website Ladezeit verringern / Geschwindigkeit steigern und Usability verbessern
-
16.08.2012, 20:16 #4
-
16.08.2012, 20:38 #5
- Registriert seit
- 19.11.2011
- Beiträge
- 496
Thanked 412 Times in 268 PostsAW: [PHP] Performantes Entwickeln
Dass es in Schleifen egal ist, ob man prä- oder postinkrementiert/-dekrementiert ist klar.
Aber die Frage ist ja, was ist schneller? Beim Postinkrement/-dekrement wird der alte Rückgabewert der Variable solange im Speicher gehalten, bis diese erneut aufgerufen wurde. Bei der Prä-Alternative ist das nicht so.
Dieser kleine Performanceunterschied ist aber vernachlässigbar, wie ich finde.Geändert von Mr. White (16.08.2012 um 20:49 Uhr)
-
16.08.2012, 20:51 #6
- Registriert seit
- 15.11.2011
- Beiträge
- 6.209
- Blog Entries
- 5
Thanked 9.130 Times in 3.005 PostsAW: [PHP] Performantes Entwickeln
Richtig, es geht in dem Fall ausschließlich um die Performance.
Da laut Brenchmarks Pre schneller ist, habe ich das hier mit aufgenommen.
Post
MIN: (0.000434) - AVG: (0.000448) - MAX: (0.001341)
Pre
MIN: (0.000403) - AVG: (0.000414) - MAX: (0.001255)
PHP Benchmark: for | casibus
Natürlich ist der Unterschied minimal.
Da es aber wie bereits gesagt für das Resultat keinen Unterschied macht, sehe ich keinen Grund wieso man nicht die performantere Methode bevorzugen sollte.
-
16.10.2012, 13:29 #7
AW: [PHP] Performantes Entwickeln
-
16.10.2012, 14:14 #8Gelöschter BenutzerGast
AW: [PHP] Performantes Entwickeln
Geändert von Gelöschter Benutzer (19.02.2013 um 20:16 Uhr)
-
16.10.2012, 14:17 #9
- Registriert seit
- 12.12.2011
- Beiträge
- 199
Thanked 147 Times in 81 Posts
-
16.10.2012, 14:21 #10
Ähnliche Themen
-
Ist es möglich einen Recorder in Attometer größe zu entwickeln?
Von Hydra im Forum Internet und TechnikAntworten: 2Letzter Beitrag: 05.01.2014, 23:19 -
Java lernen - was entwickeln?
Von Snees im Forum JavaAntworten: 5Letzter Beitrag: 29.10.2013, 00:23
Stichworte
Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.