Navigation
 Startseite
 Fachbücher
 Anzeigenmarkt
 Forum
 Webmaster News
 Script Newsletter
 Kontakt
 Script Installation
 Php
 Php Tutorials
 Webhoster Vergleich
 Impressum

Community-Bereich
 kostenlos Registrieren
 Anmelden
 Benutzerliste

Script Datenbank
 Script Archiv
 Script Top 20
 Screenshots
 Testberichte

Suche
 

Unsere Php Scripts
 Counter Script
 Umfrage Script
 Bilder Upload Script
 Terminverwaltung
 Simple PHP Forum
 RSS Grabber

Script Mods
 phpBB Adsense Mode

Tools und Generatoren
 .htpasswd Generator
 md5 Generator
 base64 Generator
 Markdown to HTML
 Colorpicker
 Unix timestamp Tool
 TLD Liste
 Webkatalog‑Verzeichnis

Partner
 Sprüche Treff

Hosterplus.de
Bekommen Sie Speicherplatz (Webspace), Domains...
https://www.Hosterplus.de
Artfiles.de
Bietet Serviceorientierte...
https://www.Artfiles.de
 
 
 

PHP microtime: Ausfuehrungszeit messen und Performance pruefen

Sie befinden sich: Home > Php Tutorial > PHP microtime: Ausfuehrungs...

PHP microtime: Ausfuehrungszeit messen und Performance pruefen


Eintrag am:  14.04.2026
Hits / Besucher:  23
Sprache:  Deutsch
Kategorie:  Fortgeschrittene Tut...
Tutorial Art:  eigenes
Eingetragen von   schubertmedia schubertmedia
 
Beschreibung

Wie lange braucht ein bestimmter Codeabschnitt zur Ausführung? PHP liefert mit der Funktion microtime() eine einfache Antwort auf diese Frage. Sie gibt den aktuellen Unix Timestamp mit Mikrosekunden-Präzision zurück und eignet sich damit ideal für schnelle Laufzeitmessungen direkt im Skript.

Illustration zum Tutorial: PHP microtime: Ausführungszeit messen und Performance prüfen

Zunächst wird erklärt, wie die Funktion aufgebaut ist und welche Rückgabeformate sie unterstützt.

Was macht microtime()?

Die Funktion microtime() liefert die aktuelle Zeit als Unix Timestamp, also die Anzahl der Sekunden seit der Unix Epoch (1. Januar 1970, 00:00:00 UTC). Im Gegensatz zu time() enthält der Rückgabewert zusätzlich den Mikrosekundenanteil, was deutlich präzisere Messungen ermöglicht.

<?php

echo microtime(); /* z.B. "0.12345600 1700000000" */
echo microtime(true); /* z.B. 1700000000.1235 */

Die Funktion akzeptiert einen optionalen booleschen Parameter, der das Format des Rückgabewerts bestimmt.

microtime(true) vs. microtime(false)

Je nach Parameterwert gibt microtime() das Ergebnis in zwei unterschiedlichen Formaten zurück.

Float-Rückgabe mit true

Wird microtime(true) aufgerufen, liefert die Funktion einen Float-Wert. Dieser enthält den kompletten Timestamp inklusive Mikrosekunden als Dezimalstellen. Dieses Format eignet sich hervorragend für Berechnungen, da sich zwei Float-Werte einfach voneinander subtrahieren lassen.

String-Rückgabe ohne Parameter

Ohne Parameter oder mit false gibt microtime() einen String im Format "Mikrosekunden Sekunden" zurück, etwa "0.12345600 1700000000". Der Mikrosekundenanteil steht dabei vor dem Sekundenanteil. Für Zeitmessungen ist dieses Format weniger praktisch, da zuerst eine Umwandlung nötig wäre.

Skript-Ausführungszeit messen

Das Grundprinzip ist einfach: Vor und nach dem zu messenden Code wird jeweils microtime(true) aufgerufen. Die Differenz ergibt die Laufzeit in Sekunden.

flowchart TD
    A["microtime(true)"] --> B[Startzeit als Float]
    C[Code ausfuehren] --> D["microtime(true)"]
    D --> E[Endzeit als Float]
    B --> F["Dauer = Ende - Start"]
    E --> F
    F --> G[Ergebnis in Sekunden]

Das folgende Beispiel misst die Ausführungszeit einer einfachen Schleife:

<?php

$start = microtime(true);

/* Hier steht der zu messende Code */
for ($i = 0; $i < 100000; $i++) {
$ergebnis = $i * $i;
}

$ende = microtime(true);
$dauer = $ende - $start;

echo 'Ausfuehrungszeit: ' . round($dauer, 4) . ' Sekunden';

Besonders nützlich wird diese Technik beim Vergleich verschiedener Lösungsansätze. Im folgenden Beispiel wird String-Konkatenation gegen implode() getestet:

<?php

$start1 = microtime(true);
$text = '';
for ($i = 0; $i < 10000; $i++) {
$text .= 'Zeile ' . $i;
}
$dauer1 = microtime(true) - $start1;

$start2 = microtime(true);
$teile = [];
for ($i = 0; $i < 10000; $i++) {
$teile[] = 'Zeile ' . $i;
}
$text = implode('', $teile);
$dauer2 = microtime(true) - $start2;

echo 'Konkatenation: ' . round($dauer1, 4) . ' s';
echo 'implode: ' . round($dauer2, 4) . ' s';

hrtime() als präzisere Alternative

Seit PHP 7.3 steht hrtime() zur Verfügung. Diese Funktion nutzt eine monotone Uhr, die unabhängig von Systemzeitänderungen (zum Beispiel NTP-Synchronisation) arbeitet. Das macht sie zuverlässiger als microtime() für Zeitmessungen.

<?php

$start = hrtime(true); /* Nanosekunden als Integer */

for ($i = 0; $i < 100000; $i++) {
$ergebnis = $i * $i;
}

$ende = hrtime(true);
$dauer = ($ende - $start) / 1e9; /* Umrechnung in Sekunden */

echo 'Ausfuehrungszeit: ' . round($dauer, 6) . ' Sekunden';

Der Aufruf hrtime(true) gibt Nanosekunden als Integer zurück. Dividiert durch 1e9 ergibt sich die Dauer in Sekunden. Im Gegensatz zu microtime() wird die Messung nicht verfälscht, wenn sich die Systemuhr während der Messung ändert.

Benchmark-Funktion mit Mehrfach-Läufen

Einzelne Messungen sind wenig aussagekräftig, da Faktoren wie Serverlast, Caching oder Garbage Collection die Ergebnisse beeinflussen. Eine Benchmark-Funktion mit mehreren Durchläufen liefert deutlich stabilere Werte.

<?php

function benchmark(callable $funktion, int $durchlaeufe = 1000): array
{
$zeiten = [];

for ($i = 0; $i < $durchlaeufe; $i++) {
$start = hrtime(true);
$funktion();
$zeiten[] = hrtime(true) - $start;
}

sort($zeiten);
$anzahl = count($zeiten);

return [
'min' => round($zeiten[0] / 1e6, 4),
'max' => round($zeiten[$anzahl - 1] / 1e6, 4),
'durchschnitt' => round(array_sum($zeiten) / $anzahl / 1e6, 4),
'median' => round($zeiten[(int)($anzahl / 2)] / 1e6, 4),
];
}

$ergebnis = benchmark(function () {
$text = '';
for ($i = 0; $i < 1000; $i++) {
$text .= 'Zeile ' . $i;
}
}, 500);

echo 'Min: ' . $ergebnis['min'] . ' ms';
echo 'Max: ' . $ergebnis['max'] . ' ms';
echo 'Durchschnitt: ' . $ergebnis['durchschnitt'] . ' ms';
echo 'Median: ' . $ergebnis['median'] . ' ms';

Die Funktion gibt Minimum, Maximum, Durchschnitt und Median in Millisekunden zurück. Der Median ist oft aussagekräftiger als der Durchschnitt, da einzelne Ausreißer ihn weniger beeinflussen.

Speicherverbrauch messen

Neben der Laufzeit ist der Speicherverbrauch ein wichtiger Performance-Indikator. Die Funktionen memory_get_usage() und memory_get_peak_usage() zeigen den aktuellen und den maximalen Speicherverbrauch eines Skripts.

<?php

$speicherVorher = memory_get_usage();

$daten = range(1, 100000);

$speicherNachher = memory_get_usage();
$verbrauch = $speicherNachher - $speicherVorher;

echo 'Verbrauch: ' . round($verbrauch / 1024, 2) . ' KB';
echo 'Spitzenwert: ' . round(memory_get_peak_usage() / 1024 / 1024, 2) . ' MB';

Der Parameter true bei memory_get_usage(true) gibt den tatsächlich vom Betriebssystem zugewiesenen Speicher zurück, während der Standardaufruf nur den von PHP intern genutzten Speicher misst.

Tipps und Einschränkungen

microtime() und hrtime() messen die sogenannte Wall Clock Time, also die tatsächlich verstrichene Zeit. CPU-Zeit bleibt unberücksichtigt. Für umfangreiches Profiling empfehlen sich spezialisierte Tools wie Xdebug (mit Profiling-Modus) oder Blackfire, die detaillierte Einblicke in Funktionsaufrufe, Speichernutzung und Aufrufhierarchien bieten.

Die tatsächliche Genauigkeit von microtime() hängt vom Betriebssystem ab. hrtime() ist auf allen Plattformen zuverlässig, da es eine monotone Uhr nutzt. Für neue Projekte ab PHP 7.3 ist hrtime() daher die bessere Wahl.

Fazit

microtime(true) ist das einfachste Werkzeug für schnelle Performance-Messungen in PHP. Für präzisere und zuverlässigere Messungen bietet hrtime(true) seit PHP 7.3 eine monotone Uhr mit Nanosekunden-Auflösung. Kombiniert mit memory_get_usage() lässt sich sowohl die Laufzeit als auch der Speicherverbrauch eines Skripts analysieren. Für reproduzierbare Ergebnisse sollte der Code in mehreren Durchläufen gemessen werden. Sobald tiefere Analysen gefragt sind, lohnt sich der Einsatz professioneller Profiling-Tools.

 


Kommentare (0)

Noch keine Kommentare. Sei der Erste!

Melde dich an, um einen Kommentar zu schreiben.
Bücherregal mit drei Büchern: 'PHP 4 - Grundlagen und Profiwissen' von Hanser Verlag, 'Webdesign in a Nutshell' von O'Reilly Verlag, und 'Webgestaltung' von Galileo Computing.