#004 Benchmark
Praktische PHP Funktionen

#004 – Benchmark in PHP

#004 - Benchmark

Hallo,
in dem heutigen Teil der Reihe zeige ich euch wie man in PHP einen Benchmark machen kann.

Was ist ein Benchmark?

Von Wikipedia.de

Benchmarking (= Maßstäbe vergleichen) bezeichnet die vergleichende Analyse von Ergebnissen oder Prozessen mit einem festgelegten Bezugswert oder Vergleichsprozess (von engl. Benchmark).

In unserem Fall wollen wir testen wie lange ein Script braucht bis bestimmte Prozesse abgearbeitet sind.

Dazu verwenden wir den Befehl microtime()

Code

Als erstes erstellen wir ganz am Anfang des Scripts eine Variable welche die aktuelle microtime speichert. Wir wollen natürlich für eine genaue Auswertung auch die Nachkommastellen haben, deswegen übergeben wir an microtime noch für $get_as_float eine 1:

<?php
	$start = microtime(1);
?>

Jetzt kommt der eigentliche Script-Teil welchen wir testen wollen:

<?php
	for ($i1=1; $i1 < 1000; $i1++)
	{
		for ($i2=1; $i2 < 1000; $i2++)
		{ 
			$i3 = hash('SHA256', pow($i1, $i2));
		}
	}
?>

Und ganz zum Schluss geben wir uns die Differenz zwischen $start und $ende aus.

<?php
	$ende = microtime(1);
	echo "Dieses Script lief ".($ende - $start)." Sekunden!";
?>

Und schon haben wir einen kleinen Benchmark für ein Script geschrieben.

Kompletter Code

<?php
	$start = microtime(1);
 
	for ($i1=1; $i1 < 1000; $i1++)
	{
		for ($i2=1; $i2 < 1000; $i2++)
		{ 
			$i3 = hash('SHA256', pow($i1, $i2));
		}
	}
 
	$ende = microtime(1);
	echo "Dieses Script lief ".($ende - $start)." Sekunden!";
?>

Weitere Anwendungsmöglichkeiten

Weitere Anwendungsmöglichkeiten wäre z.B. die Fehlersuche für zu lang laufende Scripts.
Hierzu wendet man diese Technik einfach in mehreren Scriptteilen an, um zu sehen welcher Teil am längsten braucht.
Nun kann man, sofern möglich, diese Programmteile überarbeiten und optimieren.

Fragen, Lob und/oder Kritik einfach in die Kommentare schreiben.

Gruß,
Julian


319x gelesen

Print Friendly, PDF & Email

Kommentar hinterlassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.