CloudCastle Clock

🇷🇺 Русский · 🇬🇧 English · 🇩🇪 Deutsch · 🇫🇷 Français · 🇪🇸 Español · 🇮🇹 Italiano

Stopwatch — секундомер

Назначение

Монотонный секундомер на hrtime(): круги с метками, повторная остановка без потери результата, elapsed(): TimeSpan, статический measure(callable).

Для чего и как применять

Профилирование участков кода, замеры этапов пайплайна: $watch->lap('подготовка'), Stopwatch::measure(fn () => героическая_работа()).

Пример

$watch = Stopwatch::start();
$watch->lap('подготовка');
$watch->lap('обработка');
$total = $watch->stop();            // float секунды
$span = $watch->elapsed();          // TimeSpan
$cost = Stopwatch::measure(fn () => $job->run());

Анти-паттерны

Не используйте для «настенного» времени — секундомер сознательно не знает календаря.

Жизненный цикл

stateDiagram-v2
    [*] --> Running: start()
    Running --> Running: lap(label)
    Running --> Stopped: stop()
    Stopped --> Stopped: stop() (same result)
    Stopped --> [*]: elapsed()/laps()

Сравнение возможности с аналогами

Аспект🏆 CloudCastlesymfonycarbonlcobuccibesteergebnis
Монотонная основа (hrtime)✅❌❌❌❌❌
Круги с метками✅❌❌❌❌❌
Замер колбэка одной строкой✅❌❌❌❌❌
Результат как TimeSpan✅❌❌❌❌❌
Всего🏆 400000

← К списку возможностей


🇷🇺 Русский · 🇬🇧 English · 🇩🇪 Deutsch · 🇫🇷 Français · 🇪🇸 Español · 🇮🇹 Italiano