Как отслеживать размеры бинарных файлов Python с PyInstaller в CI
Everett Pompeii
Бинарные размеры могут увеличиваться со временем, особенно в Python with PyInstaller. Континуальное бенчмаркинг — это практика запуска бенчмарков для каждого изменения, чтобы убедиться, что изменения не приводят к ухудшению производительности. Вы можете рассматривать размеры бинарных файлов как бенчмарк и отслеживать их в CI, чтобы обнаружить слишком большие размеры бинарных файлов. Самый простой способ реализовать континуальное бенчмаркинг для размеров бинарных файлов Python with PyInstaller — использовать Bencher.
Что такое Bencher?
Bencher - это набор инструментов для непрерывного тестирования производительности. Когда-нибудь регрессия производительности влияла на ваших пользователей? Bencher мог бы предотвратить это. Bencher позволяет вам обнаруживать и предотвращать регрессии производительности до того, как они попадут в продакшн.
- Запустить: Запустите свои тесты производительности локально или в CI, используя ваши любимые инструменты для этого. CLI
bencherпросто оборачивает ваш существующий аппарат тестирования и сохраняет его результаты. - Отслеживать: Отслеживайте результаты ваших тестов производительности со временем. Мониторите, запрашивайте и строите графики результатов с помощью веб-консоли Bencher на основе ветки исходного кода, испытательного стенда и меры.
- Поймать: Отлавливайте регрессии производительности в CI. Bencher использует инструменты аналитики, работающие по последнему слову техники, чтобы обнаружить регрессии производительности, прежде чем они попадут в продакшн.
По тем же причинам, по которым модульные тесты запускаются в CI, чтобы предотвратить регрессии функций, тесты производительности должны быть запущены в CI с Bencher, чтобы предотвратить регрессии производительности. Ошибки производительности – это тоже ошибки!
Шаги для Bencher Cloud
- Создайте учетную запись Bencher Cloud.
- Создайте API-токен и добавьте его в ваш CI как секрет.
- Создайте рабочий процесс для вашего CI, как GitHub Actions или GitLab CI/CD.
- Установите Bencher CLI в вашем рабочем процессе CI.
-
Скомпилируйте ваш код Python с помощью подкоманды
bencher runв вашем CI процессе, используя опцию--file-size, установленную на путь вывода вашего бинарного файла, вместе с адаптеромjson.
Шаги для Bencher Self-Hosted
- Создайте экземпляр Bencher Self-Hosted.
- Зарегистрируйте аккаунт на вашем экземпляре Bencher Self-Hosted.
- Создайте API токен и добавьте его в CI как секрет.
- Создайте рабочий процесс для вашего CI, например GitHub Actions или GitLab CI/CD.
- Установите Bencher CLI в ваш CI рабочий процесс. Убедитесь, что версия CLI соответствует версии вашего экземпляра Bencher Self-Hosted.
-
Скомпилируйте ваш код Python с помощью подкоманды
bencher runв вашем CI процессе, используя опцию--file-size, установленную на путь вывода вашего бинарного файла, вместе с адаптеромjsonи установкой опции--hostна URL вашего экземпляра Bencher Self-Hosted.
⚖️ Размер файла
Команда CLI bencher run
может быть использована для отслеживания размера файла (т.е. размера бинарного файла) ваших продуктов с использованием опции --file-size.
Опция --file-size ожидает путь к файлу, размер которого будет измерен.
Внутри, bencher run
выводит результаты в формате Bencher Metric Format (BMF) JSON.
Поэтому рекомендуется явно использовать адаптер json.
Для получения дополнительной информации смотрите как отслеживать размер файла.
Измеряется file-size Measure (т.е. bytes (B)).
Доступно только значение размера файла (т.е. value).
Ни lower_value, ни upper_value не собираются.
Мера file-size не создается по умолчанию для всех проектов.
Однако, когда вы используете опцию --file-size, эта мера будет автоматически создана для вашего проекта.
Опцию --file-size можно использовать несколько раз для отслеживания размеров нескольких файлов.
bencher run --file-size ./binary --adapter json "pyinstaller --onefile binary.py"Отслеживайте свои бенчмарки в CI
Когда-либо ли у вас была регрессия производительности, повлиявшая на ваших пользователей? Bencher мог бы предотвратить это с помощью н kontinuierlichem Benchmarking.