installation.de

Ein neues WordPress-Weblog

Posts Tagged ‘ String ’

Gerade fand ich einen interessanten Abschnitt in einem Artikel wo es über Zeitmessung von PHP-Skripten auf dem Apache ging. Speziell in dem darin enthaltenen Testskript geht um die Geschwindigkeit der Ausgaben der verschiedensten Möglichkeiten in PHP einen String in Kombination mit einer Variablen auszugeben.

Hier der Abschnitt:

- String und Variable in einen echo-Befehl mit doppelten Anführungszeichen packen und den fixen Teil mit der Variable zu mischen, etwa

<?php
$teststring = "Erde";
echo "Hallo $teststring";
?>

Das ist die meiner Ansicht nach bequemste Methode, Strings mit variablen Inhalten zu schreiben. Aber ist das auch die schnellste? Es gibt noch andere Möglichkeiten:

<?php
$teststring = "Erde";
echo 'Hallo '.$teststring;
?>

Hier haben wir es mit einfachen Anführungszeichen zu tun. Das bedeutet für PHP: Variablen innerhalb der einfachen Anführungszeichen werden nicht interpretiert. Also muss die Variable mit einem Punkt hinten angehängt werden.

Oder wie wäre es mit dieser Variante:

<?php
$teststring = "Erde";
?>
Hallo <?=$teststring?>

Hier wird “Hallo” allein von HTML ausgegeben, nur für die Ausgabe der Variablen macht sich der PHP-Interpreter an die Arbeit.

Zuletzt hätten wir noch diese Variante:

<?php
$teststring = "Erde";
printf("Hallo %s", $teststring);
?>

Für die formatierte Ausgabe von Strings.

Welche Methode ist also die schnellste? Ausprobieren. Vom Gefühl her würde man printf und echo”" die schlechtesten Prognosen geben.

Damit der Benchmark mit so einer simplen Programmzeile messbare Ergebnisse liefert, packen wir die Ausgabe noch in eine Schleife. Jede Zeile soll 5000mal ausgegeben werden. Das sieht dann im ersten Beispiel so aus:

<?php
$teststring = "Erde";
for ($i=0; $i < 5000; $i++)
{
echo "Hallo $teststring";
}
?>

Auch die anderen Testdateien müssen mit der Schleife ausgestattet sein.

Das Ergebnis meines kleinen Tests: Wie erwartet belegt printf den letzten Platz mit rund 78 Millisekunden pro Abruf auf einem P450 mit Suse Linux und 192 MByte Speicher. Kein Wunder: printf ist zu mächtig und vollkommen fehl am Platze, um einfach nur einen Text und eine Variable zu mixen.

Auf dem dritten Platz liegt echo mit den doppelten Anführungszeichen. Etwas schneller als printf braucht es dennoch satte 71 Millisekunden pro Abruf.

Deutlich schneller ist schon der Echo-Befehl mit einfachen Anführungszeichen. Er schafft die Seite in durchschnittlich 32 Millisekunden.

Die Mischung aus HTML mit der eingebetteten PHP-Variablen erweist sich aber als schnellste Lösung. Nur 25 Millisekunden brauchte der Server für den Abruf des PHP-Dokuments mit seinem 5000fachen “Hallo Erde”. Alle Angaben ohne Gewähr – probieren Sie es einfach mal selbst aus.

Übrigens: Führen Sie solche Benchmarks nur zu Hause oder einem Testserver durch. Ihr Produktiv-Server sollte nicht mit solchen Versuchen belastet werden.

Hier der Link zum vollen Artikel:
http://www.goldmann.de/apache-benchmark-misst-geschwindigkeit-von-php-programm_tipp_98.html