🇷🇺 Русский · 🇬🇧 English · 🇩🇪 Deutsch · 🇫🇷 Français · 🇪🇸 Español · 🇮🇹 Italiano
Stopwatch — Stoppuhr
Zweck
Eine monotone Stoppuhr auf Basis von hrtime(): Messungen mit Beschriftungen, wiederholtes Stoppen ohne Verlust des Ergebnisses, elapsed(): TimeSpan, statisches measure(callable).
Wofür und wie einzusetzen
Profiling von Codeabschnitten, Messung von Pipeline-Etappen: $watch->lap('prepare'), Stopwatch::measure(fn () => heavy_work()).
Beispiel
$watch = Stopwatch::start();
$watch->lap('preparation');
$watch->lap('processing');
$total = $watch->stop(); // float seconds
$span = $watch->elapsed(); // TimeSpan
$cost = Stopwatch::measure(fn () => $job->run());
Anti-Muster
Nicht für „Wanduhr"-Zeit verwenden — die Stoppuhr kennt bewusst keinen Kalender.
Lebenszyklus
stateDiagram-v2
[*] --> Running: start()
Running --> Running: lap(label)
Running --> Stopped: stop()
Stopped --> Stopped: stop() (same result)
Stopped --> [*]: elapsed()/laps()
Funktionsvergleich mit Alternativen
| Aspekt | 🏆 CloudCastle | symfony | carbon | lcobucci | beste | ergebnis |
|---|---|---|---|---|---|---|
Monotone Grundlage (hrtime) | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Messungen mit Beschriftungen | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Messung eines Callbacks in einer Zeile | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
Ergebnis als TimeSpan | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Gesamt | 🏆 4 | 0 | 0 | 0 | 0 | 0 |
🇷🇺 Русский · 🇬🇧 English · 🇩🇪 Deutsch · 🇫🇷 Français · 🇪🇸 Español · 🇮🇹 Italiano