Как протестировать команды и программы Linux
Некоторое время назад я поделился несколькими альтернативами утилите командной строки top. Некоторые пользователи спрашивали меня, какой из этих инструментов лучше и на каком основании (например, функции, участники, количество активных лет, запросы страниц и т. д.) я сравнивал эти инструменты. Они также попросили меня поделиться результатами сравнительного анализа, если они у меня есть. К сожалению, в то время я не знал, как тестировать программы. В поисках простых и удобных инструментов для сравнения программ Linux я наткнулся на две утилиты с названиями 'Bench' и 'Hyperfine'. Это простые и удобные в использовании инструменты командной строки для тестирования команд и программ Linux в Linux и Unix-подобных системах.
1. Проверьте команды и программы Linux из командной строки с помощью Bench Tool
Утилита 'Bench' тестирует одну или несколько заданных команд/программ, используя библиотеку критериев Haskell, и отображает выходные статистические данные в простом для понимания формате. Этот инструмент может оказаться полезным, если вам необходимо сравнить аналогичные программы на основе результатов сравнительного анализа. Мы также можем экспортировать результаты в формат HTML, CSV или в шаблонный вывод.
1.1. Установить утилиту Bench в Linux
Утилита стенда может быть установлена тремя способами.
1. Использование Linuxbrew
Мы можем установить утилиту Bench с помощью менеджера пакетов Linuxbrew. Если вы еще не установили Linuxbrew, перейдите по следующей ссылке.
- Linuxbrew — общий менеджер пакетов для Linux и Mac OS X
После установки Linuxbrew выполните следующую команду для установки Bench:
brew install bench
2. Использование инструмента стека Haskell
Сначала установите Haskell, как описано по следующей ссылке.
- Начало работы с языком программирования Haskell
Затем выполните следующие команды для установки Bench.
stack setup
stack install bench
«Стек» установит стенд в ~/.local/bin или что-то подобное. Прежде чем использовать стендовый инструмент, убедитесь, что каталог установки находится в пути поиска исполняемого файла. Вам напомнят об этом, даже если вы забыли.
3. Использование менеджера пакетов Nix
Другой способ установить Bench — использовать менеджер пакетов Nix. Установите Nix, как показано по ссылке ниже.
- Nix - мощный менеджер пакетов для Linux и Unix
После установки Nix установите Bench Tool с помощью команды:
nix-env -i bench
1.2. Тестирование команд и программ Linux с помощью Bench
Давайте проверим результат команды ls -al. Для этого запустите:
bench 'ls -al'
Пример вывода:
Проверить команду ls
Вы должны заключать команды в кавычки, когда используете с ними флаги/опции.
Аналогичным образом вы можете протестировать любые программы, установленные в вашей системе. Следующие команды показывают результаты тестирования программ «htop» и «ptop».
bench htop
bench ptop
Тестирование программ htop и ptop
Инструмент Bench также может тестировать несколько программ одновременно. Вот результат тестирования программ ls, htop, ptop.
bench ls htop ptop
Пример вывода:
Сравните несколько программ
Мы также можем экспортировать результаты теста в HTML, как показано ниже.
bench htop --output example.html
Чтобы экспортировать результат в CSV, просто запустите:
bench htop --csv FILE
Посмотреть раздел помощи:
bench --help
2. Протестируйте команды и программы Linux из командной строки с помощью Hyperfine
Hyperfine — это еще один инструмент для сравнительного анализа командной строки, созданный на основе инструмента «Bench», который мы только что обсуждали выше. Это бесплатная кроссплатформенная программа для сравнительного анализа с открытым исходным кодом, написанная на языке программирования Rust. Он имеет несколько дополнительных функций по сравнению с инструментом Bench, перечисленными ниже.
- Статистический анализ по нескольким прогонам.
- Поддержка произвольных команд оболочки.
- Постоянная обратная связь о ходе выполнения эталонных тестов и текущих оценках.
- Выполните прогрев перед фактическим тестом.
- Команды очистки кэша можно настроить перед каждым запуском таймера.
- Статистическое обнаружение выбросов.
- Экспортируйте результаты тестов в различные форматы, такие как CSV, JSON, Markdown.
- Параметризованные тесты.
2.1. Установите Hyperfine в Linux
Мы можем установить Hyperfine, используя любой из следующих методов.
1. Использование Linuxbrew
brew install hyperfine
2. Использование груза
Убедитесь, что вы установили Rust, как описано по следующей ссылке.
- Установить язык программирования Rust в Linux
После установки Rust выполните следующую команду, чтобы установить Hyperfine через Cargo:
cargo install hyperfine
3. Использование вспомогательных программ AUR
Hyperfine доступен в AUR. Таким образом, вы можете установить его в системах на базе Arch, используя любые вспомогательные программы, такие как YaY, как показано ниже.
yay -S hyperfine
4. Загрузите и установите двоичные файлы
Hyperfine доступен в виде двоичных файлов для систем на базе Debian. Загрузите последнюю версию двоичного файла .deb со страницы релизов и установите его с помощью диспетчера пакетов dpkg. На момент написания этого руководства последней версией была 1.4.0.
wget https://github.com/sharkdp/hyperfine/releases/download/v1.4.0/hyperfine_1.4.0_amd64.deb
sudo dpkg -i hyperfine_1.4.0_amd64.deb
sudo apt install -f
2.2. Тестирование команд и программ Linux с использованием Hyperfine
Чтобы запустить тест с использованием Hyperfine, просто запустите его вместе с программой/командой, как показано ниже.
hyperfine 'ls -al'
Тестирование команд с использованием сверхтонкого
Протестируйте несколько команд/программ:
hyperfine htop ptop
Пример вывода:
Протестируйте несколько программ с помощью Hyperfine
Как вы можете видеть в конце вывода, Hyperfine упоминает: 'htop работал в 1,96 раза быстрее, чем ptop', поэтому мы можем сразу сделать вывод, что htop работает лучше, чем Ptop. Это поможет вам быстро определить, какая программа работает лучше при сравнении нескольких программ. Однако мы не получаем такого подробного вывода в утилите Bench.
Hyperfine автоматически определит количество запусков для каждой команды. По умолчанию он выполнит не менее 10 тестов. Если вы хотите установить минимальное количество запусков (например, 5 запусков), используйте -m
/-- параметр min-runs
, как показано ниже:
hyperfine --min-runs 5 htop ptop
Или,
hyperfine -m 5 htop ptop
Аналогично, чтобы выполнить максимальное количество запусков для каждой команды, команда будет такой:
hyperfine --max-runs 5 htop ptop
Или,
hyperfine -M 5 htop ptop
Мы даже можем выполнить точное количество запусков для каждой команды, используя следующую команду:
hyperfine -r 5 htop ptop
Как вы, возможно, знаете, если время выполнения программы ограничено дисковым вводом-выводом, на результаты тестирования могут сильно влиять дисковые кэши и то, являются ли они холодными или теплыми. К счастью, у Hyperfine есть возможность выполнить определенное количество запусков программы, прежде чем приступить к фактическому тестированию.
Чтобы выполнить ЧИСЛО прогонов (например, 3) перед фактическим тестом, используйте -w
/--warmup
вариант, как показано ниже:
hyperfine --warmup 3 htop
Как и утилита Bench, Hyperfine также позволяет экспортировать результаты тестов в заданный файл. Мы можем экспортировать результаты в форматы CSV, JSON и Markdown.
Например, чтобы экспортировать результаты в формате Markdown, используйте следующую команду:
hyperfine htop ptop --export-markdown <FILE-NAME>
Дополнительные параметры и подробности использования см. в разделе справки:
hyperfine --help
И это все на данный момент. Если вы когда-либо оказывались в ситуации, когда вам нужно было протестировать аналогичные и альтернативные программы, эти инструменты могут вам помочь.
Ресурсы:
- Репозиторий Bench на GitHub
- Репозиторий Hyperfine GitHub