Как отслеживать время сборки с помощью Bencher


Bencher поддерживает наиболее популярные тестовые фреймворки из коробки. Тем не менее, иногда необходимо измерить, сколько времени занимает сборка ваших продуктов, например, время компиляции исполняемого файла. К счастью, Bencher также поддерживает отслеживание времени сборки. Самый простой способ отслеживать время сборки — использовать bencher run подкоманду CLI с флагом --build-time. Под капотом, bencher run выводит результаты в формате Bencher Metric Format (BMF) JSON. Поэтому стоит явно использовать адаптер json.

Если у вас есть скрипт, расположенный в ./my_build_script.sh, который собирает ваш бинарный файл, тогда вы можете отслеживать время сборки этого бинарного файла с помощью bencher run и адаптера json. Флаг --build-time требует команду бенчмарка.

Terminal window
bencher run --build-time --adapter json ./my_build_script.sh

Сгенерированный BMF JSON будет выглядеть так, если ваш скрипт сборки выполняется за 87.0 секунд:

{
"/bin/sh -c ./my_build_script.sh": {
"build-time": {
"value": 87.0
}
}
}

Обратите внимание, что имя Бенчмарка/bin/sh -c ./my_build_script.sh. Это потому что наша команда является только единственным аргументом, поэтому bencher run по умолчанию использует форму shell для выполнения. В качестве альтернативы, если вы хотите принудительно использовать форму exec, вы можете либо предоставить несколько аргументов, либо использовать флаг --exec.

Terminal window
bencher run --build-time --adapter json --exec ./my_build_script.sh

Если это построение в форме exec заняло 86.98 секунд, то сгенерированный BMF JSON будет выглядеть так:

{
"./my_build_script.sh": {
"build-time": {
"value": 86.98
}
}
}

Теперь имя Бенчмарка просто ./my_build_script.sh. Объект ./my_build_script.sh содержит ключ build-time. build-time является слагом для встроенной Меры Времени Сборки Measure. Мера Времени Сборки не создается по умолчанию для всех проектов. Однако, когда вы используете Меру Времени Сборки, она будет автоматически создана для вашего проекта. Объект Меры Времени Сборки содержит Метрику со значением времени сборки в секундах, 87.0 и 86.98 в наших примерах.

Время сборки всегда будет округлено до ближайших двух десятичных знаков. То есть, оно никогда не будет длинным десятичным, как 42.666666.

Отслеживание размера файла

Вы можете захотеть отслеживать размер файла ваших результатов, в дополнение к отслеживанию времени, которое требуется на их сборку. bencher run поддерживает отслеживание как времени сборки, так и размеров файлов.

Если результатом вашего скрипта сборки ./my_build_script.sh был бинарный файл по пути ./path/to/my_binary, вы могли бы отслеживать как время компиляции, так и размер бинарного файла с помощью этой команды:

Terminal window
bencher run --build-time --file-size ./path/to/my_binary --adapter json ./my_build_script.sh

Если бы my_binary имел размер 42 байта, сгенерированный BMF JSON выглядел бы так:

{
"/bin/sh -c ./my_build_script.sh": {
"build-time": {
"value": 87.0
}
},
"my_binary": {
"file-size": {
"value": 42.0
}
}
}

🐰 Поздравляем! Вы научились отслеживать время сборки! 🎉


Продолжайте: Как отслеживать бенчмарки в CI ➡

🤖 Этот документ был автоматически создан OpenAI GPT-4. Оно может быть неточным и содержать ошибки. Если вы обнаружите какие-либо ошибки, откройте проблему на GitHub.


Published: Sat, November 9, 2024 at 10:00:00 AM UTC