Что такое Hyperfine и зачем он нужен
Hyperfine — это кроссплатформенный инструмент для бенчмаркинга командной строки, написанный на Rust. В отличие от простого использования time, он проводит статистический анализ по множеству запусков, автоматически определяет количество итераций (минимум 10 или 3 секунды замера) и выявляет выбросы, вызванные фоновыми процессами или кэшированием.
Главное преимущество — коррекция времени запуска оболочки. Hyperfine измеряет задержку самого /bin/sh (или выбранного шелла) и вычитает её из общего времени, показывая реальную производительность команды.
Ключевые возможности для точных замеров
Утилита позволяет гибко настраивать среду выполнения, что критично для объективных результатов:
- Warmup runs (
-w): Запуск команды несколько раз перед замером для прогрева кэша. - Prepare commands (
-p): Выполнение очистки кэша (например,sync; echo 3 | sudo tee /proc/sys/vm/drop_caches) перед каждым замером для тестирования на «холодном» диске. - Параметризованные бенчмарки: Возможность варьировать параметры (число потоков, задержки) через
--parameter-scanили--parameter-list. - Экспорт результатов: Поддержка CSV, JSON, Markdown и AsciiDoc для последующего анализа.
Пример сравнения: find vs fd
Разработчики приводят наглядный пример сравнения классической утилиты find и её современного аналога fd. Ниже приведены типичные метрики для поиска файлов по регулярному выражению, полученные с помощью Hyperfine:
| Команда | Среднее время [s] | Мин [s] | Макс [s] | Относительная скорость |
|---|---|---|---|---|
| find . -iregex '.*[0-9]\.jpg$' | 2.275 ± 0.046 | 2.243 | 2.397 | 9.79 ± 0.22 |
| find . -iname '*[0-9].jpg' | 1.427 ± 0.026 | 1.405 | 1.468 | 6.14 ± 0.13 |
| fd -HI '.*[0-9]\.jpg$' | 0.232 ± 0.002 | 0.230 | 0.236 | 1.00 |
Как видно из таблицы, fd опережает find почти в 10 раз при использовании сложных регулярных выражений, что делает Hyperfine незаменимым инструментом для выбора оптимальных утилит.
Установка и совместимость
Hyperfine доступна для всех основных ОС. Актуальная версия на момент обновления — v1.20.0. Установить её можно через стандартные менеджеры пакетов:
- Linux:
apt install hyperfine(Ubuntu/Debian),dnf install hyperfine(Fedora),pacman -S hyperfine(Arch). - macOS:
brew install hyperfineилиsudo port install hyperfine. - Windows:
choco install hyperfine,scoop install hyperfineилиwinget install hyperfine. - Из исходников:
cargo install --locked hyperfine(требуется Rust 1.76+).
Инструмент интегрируется с CI/CD системами (через Bencher) и позволяет визуализировать регрессии производительности в Git-истории.
Источник: Github ↗
