🇷🇺 Русский · 🇬🇧 English · 🇩🇪 Deutsch · 🇫🇷 Français · 🇪🇸 Español · 🇮🇹 Italiano
Stopwatch — cronómetro
Propósito
Cronómetro monótono basado en hrtime(): vueltas con etiquetas, parada repetida sin pérdida del resultado, elapsed(): TimeSpan, measure(callable) estático.
Para qué y cómo usarlo
Perfilado de fragmentos de código, medición de etapas de un pipeline: $watch->lap('preparación'), Stopwatch::measure(fn () => trabajo_heroico()).
Ejemplo
$watch = Stopwatch::start();
$watch->lap('preparation');
$watch->lap('processing');
$total = $watch->stop(); // float seconds
$span = $watch->elapsed(); // TimeSpan
$cost = Stopwatch::measure(fn () => $job->run());
Antipatrones
No lo use para el tiempo «de pared» — el cronómetro deliberadamente desconoce el calendario.
Ciclo de vida
stateDiagram-v2
[*] --> Running: start()
Running --> Running: lap(label)
Running --> Stopped: stop()
Stopped --> Stopped: stop() (same result)
Stopped --> [*]: elapsed()/laps()
Comparación de la característica con alternativas
| Aspecto | 🏆 CloudCastle | symfony | carbon | lcobucci | beste | ergebnis |
|---|---|---|---|---|---|---|
Base monótona (hrtime) | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Vueltas con etiquetas | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Medición de un callback en una línea | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
Resultado como TimeSpan | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Total | 🏆 4 | 0 | 0 | 0 | 0 | 0 |
← Volver a la lista de características
🇷🇺 Русский · 🇬🇧 English · 🇩🇪 Deutsch · 🇫🇷 Français · 🇪🇸 Español · 🇮🇹 Italiano