Start · Sprachen · PHP · Referenz · HRTime\Unit

HRTime\Unit

Klasse

Enum-Klasse der HRTime-Erweiterung, die Konstanten für Zeiteinheiten (Nanosekunden bis Sekunden) bereitstellt.

seit PHP 0.6.0 Kategorie: misc

Signatur

class HRTime\Unit

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;
Nanosekunden: 45123456 Mikrosekunden: 45123.456 Millisekunden: 45.123456 Sekunden: 0.045123456

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;
Vergangene Mikrosekunden: 50023

// 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.