Länge von Variablennamen beachten zur Code-Optimierung

Eine häufig diskutierte Frage in punkto Performance-Steigerung ist die Länge von Variablennamen. Unter Array-Keys als String oder Ganzzahl haben wir gezeigt, dass kurze Array-Keys schneller von PHP verarbeitet werden können als längere. Lässt sich diese Fausregel auch auf Variablennamen übertragen?

Wir haben drei PHP-Scripte erstellt, die mit drei unterschiedlich langen Variablennamen arbeiten:

1 Zeichen

Code:

<?php
$a = "Beispiel";
for ($i = 0;$i < 10000;$i++) {
    echo $a;
}
?>

Erläuterung:
Der Variable $a wird der Wert Beispiel zugeordnet. Anschließend wird die Variable innerhalb einer for()-Schleife 10.000mal ausgegeben.

3 Zeichen

Code:

<?php
$abc = "Beispiel";
for ($i = 0;$i < 10000;$i++) {
    echo $abc;
}
?>

Erläuterung:
Gegenüber dem ersten Beispiel-Script haben wir nun den Namen der Variable von $a in $abc geändert. Ihr Name hat also nun 3 Stellen statt nur einer.

20 Zeichen

Code:

<?php
$abcdefghijklmnopqrst = "Beispiel";
for ($i = 0;$i < 10000;$i++) {
    echo $abcdefghijklmnopqrst;
}
?>

Erläuterung:
Der Name unserer Test-Variable $abcdefghijklmnopqrst hat in diesem Script nun 20 Zeichen.

Ergebnis

Requests per second (RPS)Time per Request (TPR)Vergleich
1 Zeichen140.97 [#/sec] (mean)7.094 [ms] (mean)
15.0%
13.0%
3 Zeichen122.61 [#/sec] (mean)8.156 [ms] (mean)
20 Zeichen137.04 [#/sec] (mean)7.297 [ms] (mean)
11.8%
10.5%

Erwartungsgemäß wird das Script mit dem einstelligen Variablennamen am schnellsten ausgeführt. Trotz mehrfacher Durchführung des Benchmarks liegt das Script mit dem 3stelligen Variablennamen jedoch nicht an zweiter Stelle, sondern hinter dem Beispiel-Code mit dem 20stelligen Variablennamen.

Fazit

Da dieses Benchmark-Ergebnis schwierig zu interpretieren ist, ändern wir den PHP-Code ein wenig und führen den gleichen Test nochmals durch. Die Wertzuweisung erfolgt in den drei Scripten jetzt nicht mehr oberhalb, sondern innerhalb der for()-Schleife.

1 Zeichen

Code:

<?php
for ($i = 0;$i < 10000;$i++) {
    $a = "Beispiel";
    echo $a;
}
?>

3 Zeichen

Code:

<?php
for ($i = 0;$i < 10000;$i++) {
    $abc = "Beispiel";
    echo $abc;
}
?>

20 Zeichen

Code:

<?php
for ($i = 0;$i < 10000;$i++) {
    $abcdefghijklmnopqrst = "Beispiel";
    echo $abcdefghijklmnopqrst;
}
?>

Ergebnis

Requests per second (RPS)Time per Request (TPR)Vergleich
1 Zeichen98.77 [#/sec] (mean)10.125 [ms] (mean)
3 Zeichen109.78 [#/sec] (mean)9.109 [ms] (mean)
11.1%
11.2%
20 Zeichen110.34 [#/sec] (mean)9.063 [ms] (mean)
11.7%
11.7%

Das Script mit dem 20stelligen Variablennamen ist nun das schnellste, gefolgt vom Code mit dem 3stelligen Variablennamen. Am langsamsten in unserem Benchmark war das Script mit dem einstelligen Variablennamen.

Fazit

Die Länge von Variablennamen spielt keine große Rolle in punkto Performance. Auch wenn die Benchmark-Ergebnisse auf dieser Seite das Gegenteil zu belegen scheinen, sollten Variablennamen kurz und prägnant gewählt werden. Bei kleinen Scripten mit einer Vielzahl unterschiedlicher Variablen kann durch Verkürzung der Variablennamen eine um rund 3-5% bessere Performance erzielt werden. Jedoch gibt es sehr viel bedeutsamere Wege zur Performance-Steigerung als sich über die richtige Länge von Variablennamen Gedanken zu machen. Der Fokus sollte in jedem Fall auf der Lesbarkeit des Codes liegen.

 

Anmerkung:
Die Tests wurden mit dem Apache HTTP server benchmarking tool ab auf einem im Februar 2017 nicht mehr dem Stand der Technik entsprechenden Server durchgeführt. Die RPS und TPR der getesteten PHP-Scripte sollten auf einem im Produktiv-Einsatz befindlichen Webserver deutlich besser sein.

Nicht benötigte Variablen mit unset löschen

Nicht benötigte Variablen mit unset löschen

Eine häufig gestellte Frage ist, ob das Löschen im Script nicht mehr benötigter Variablen Speicher freisetzt bzw. so viel Speicher freisetzt, dass sich dadurch die Performance eines PHP-Scripts verbessern lässt. Wir haben drei kleine PHP-Scripte programmiert, um die Auswirkungen von unset() auf die Performance zu testen.