Signatur
Beschreibung
HRTime\Unit ist eine Klasse der HRTime-PECL-Erweiterung und stellt Integer-Konstanten für verschiedene Zeiteinheiten bereit. Diese Konstanten werden verwendet, wenn Zeitmessungen mit HRTime\StopWatch oder HRTime\PerformanceCounter abgerufen werden, um die gewünschte Granularität der Ausgabe festzulegen.
Die Klasse selbst wird nicht instanziiert; sie dient ausschließlich als Namensraum für die Zeiteinheits-Konstanten. Durch die Verwendung dieser Konstanten bleibt der Code lesbar und typsicher, da keine magischen Zahlen für die Einheitenwahl benötigt werden.
Typische Anwendungsszenarien sind die Auswertung von Laufzeitmessungen in Benchmarking-Tools, Performance-Analysen oder überall dort, wo hochauflösende Zeitmessungen in einer menschenlesbaren Einheit ausgegeben werden sollen.
Beispiele
Zeitmessung mit StopWatch und HRTime\Unit-Konstanten
<?php
// Voraussetzung: PECL-Erweiterung hrtime installiert
$sw = new HRTime\StopWatch();
$sw->start();
// Simuliere eine Arbeitslast
for ($i = 0; $i < 1000000; $i++) {
$x = sqrt($i);
}
$sw->stop();
// Elapsed time in verschiedenen Einheiten ausgeben
echo 'Nanosekunden: ' . $sw->getElapsedTime(HRTime\Unit::NANOSECOND) . PHP_EOL;
echo 'Mikrosekunden: ' . $sw->getElapsedTime(HRTime\Unit::MICROSECOND) . PHP_EOL;
echo 'Millisekunden: ' . $sw->getElapsedTime(HRTime\Unit::MILLISECOND) . PHP_EOL;
echo 'Sekunden: ' . $sw->getElapsedTime(HRTime\Unit::SECOND) . PHP_EOL;
PerformanceCounter mit HRTime\Unit-Konstante
<?php
// Hochauflösenden Zeitstempel in Mikrosekunden auslesen
$start = HRTime\PerformanceCounter::getTime(HRTime\Unit::MICROSECOND);
usleep(50000); // 50 ms warten
$end = HRTime\PerformanceCounter::getTime(HRTime\Unit::MICROSECOND);
$elapsed = $end - $start;
echo 'Vergangene Mikrosekunden: ' . $elapsed . PHP_EOL;
// Wichtig · Fallstricke
Verfügbare Konstanten der Klasse:
HRTime\Unit::NANOSECOND— Nanosekunden (1 ns = 10-9 s)HRTime\Unit::MICROSECOND— Mikrosekunden (1 µs = 10-6 s)HRTime\Unit::MILLISECOND— Millisekunden (1 ms = 10-3 s)HRTime\Unit::SECOND— Sekunden
Hinweis: Die HRTime-Erweiterung muss als PECL-Paket installiert sein (pecl install hrtime). Sie ist nicht im PHP-Kern enthalten. Ab PHP 7.3 ist hrtime() als Kern-Funktion verfügbar, die jedoch keine Einheiten-Konstanten kennt und eine andere API bietet.
Die tatsächliche Auflösung der Zeitmessung ist plattformabhängig; auf den meisten modernen Betriebssystemen steht Nanosekunden-Genauigkeit zur Verfügung.