Как отслеживать размеры бинарных файлов Python с PyInstaller в CI

Everett Pompeii

Everett Pompeii


Бинарные размеры могут увеличиваться со временем, особенно в Python with PyInstaller. Континуальное бенчмаркинг — это практика запуска бенчмарков для каждого изменения, чтобы убедиться, что изменения не приводят к ухудшению производительности. Вы можете рассматривать размеры бинарных файлов как бенчмарк и отслеживать их в CI, чтобы обнаружить слишком большие размеры бинарных файлов. Самый простой способ реализовать континуальное бенчмаркинг для размеров бинарных файлов Python with PyInstaller — использовать Bencher.

Что такое Bencher?

Bencher - это набор инструментов для непрерывного тестирования производительности. Когда-нибудь регрессия производительности влияла на ваших пользователей? Bencher мог бы предотвратить это. Bencher позволяет вам обнаруживать и предотвращать регрессии производительности до того, как они будут слиты.

  • Запустить: Запустите свои тесты производительности локально или в CI, используя точно те же самые bare metal раннеры и ваши любимые инструменты для тестирования. CLI bencher оркестрирует запуск ваших тестов производительности на bare metal и сохраняет их результаты.
  • Отслеживать: Отслеживайте результаты ваших тестов производительности со временем. Мониторите, запрашивайте и строите графики результатов с помощью веб-консоли Bencher на основе ветки исходного кода, испытательного стенда и меры.
  • Поймать: Отлавливайте регрессии производительности локально или в CI, используя точно то же самое bare metal оборудование. Bencher использует инструменты аналитики, работающие по последнему слову техники, чтобы обнаружить регрессии производительности, прежде чем они будут слиты.

По тем же причинам, по которым модульные тесты запускаются, чтобы предотвратить регрессии функций, тесты производительности должны быть запущены с Bencher, чтобы предотвратить регрессии производительности. Ошибки производительности – это тоже ошибки!

Шаги для Bencher Cloud

  1. Создайте учетную запись Bencher Cloud.
  2. Создайте API-токен и добавьте его в ваш CI как секрет.
  3. Создайте рабочий процесс для вашего CI, как GitHub Actions или GitLab CI/CD.
  4. Установите Bencher CLI в вашем рабочем процессе CI.
  5. Скомпилируйте ваш код Python с помощью подкоманды bencher run в вашем CI процессе, используя опцию --file-size, установленную на путь вывода вашего бинарного файла, вместе с адаптером json.

Шаги для Bencher Self-Hosted

  1. Создайте экземпляр Bencher Self-Hosted.
  2. Зарегистрируйте аккаунт на вашем экземпляре Bencher Self-Hosted.
  3. Создайте API токен и добавьте его в CI как секрет.
  4. Создайте рабочий процесс для вашего CI, например GitHub Actions или GitLab CI/CD.
  5. Установите Bencher CLI в ваш CI рабочий процесс. Убедитесь, что версия CLI соответствует версии вашего экземпляра Bencher Self-Hosted.
  6. Скомпилируйте ваш код 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 можно использовать несколько раз для отслеживания размеров нескольких файлов.

Terminal window
bencher run --file-size ./binary --adapter json "pyinstaller --onefile binary.py"

Отслеживайте свои бенчмарки в CI

Когда-либо ли у вас была регрессия производительности, повлиявшая на ваших пользователей? Bencher мог бы предотвратить это с помощью н kontinuierlichem Benchmarking.

🤖 Этот документ был автоматически переведён с помощью ИИ. Он может быть неточным и содержать ошибки. Если вы обнаружите какие-либо ошибки, откройте проблему на GitHub.