Метрики¶
Система метрик Argenta предоставляет инструменты для измерения производительности ключевых компонентов библиотеки. Это позволяет отслеживать регрессию/прогрессию производительности между релизами и оптимизировать критические участки кода.
Запуск метрик¶
Для работы с метриками необходимо склонировать репозиторий и установить зависимости:
git clone https://github.com/koloideal/Argenta.git
cd Argenta
uv sync --group metrics
Запуск системы метрик:
python -m metrics
После запуска откроется интерактивная сессия с доступными командами для работы с бенчмарками.
Доступные команды¶
run-all¶
Запускает все зарегистрированные бенчмарки и выводит результаты в виде таблиц.
Синтаксис:
run-all [--without-gc] [--without-system-info]
Флаги:
--without-gc— отключает сборщик мусора во время выполнения бенчмарков для более стабильных результатов--without-system-info— скрывает информацию о системе в выводе
list-types¶
Выводит список всех доступных типов бенчмарков с количеством тестов в каждой категории.
Синтаксис:
list-types
Пример вывода:
Available benchmark types:
• flag_validation (9 benchmarks)
• input_command_parse (7 benchmarks)
• finds_appropriate_handler (5 benchmarks)
run-type¶
Запускает бенчмарки определённого типа.
Синтаксис:
run-type --type <type_name> [--without-gc] [--without-system-info]
Флаги:
--type— тип бенчмарков для запуска (обязательный)--without-gc— отключает сборщик мусора--without-system-info— скрывает информацию о системе
diagrams-generate¶
Генерирует визуальные диаграммы сравнения производительности для всех бенчмарков.
Синтаксис:
diagrams-generate [--iterations <number>] [--without-gc]
Флаги:
--iterations— количество итераций для каждого бенчмарка (по умолчанию 100)--without-gc— отключает сборщик мусора
Диаграммы сохраняются в директорию metrics/reports/diagrams/<timestamp>/.
release-generate¶
Генерирует полный отчёт о производительности для текущей версии библиотеки. Используется при подготовке релизов.
Синтаксис:
release-generate
Команда автоматически:
Определяет текущую версию библиотеки
Запускает все бенчмарки с 1000 итераций и отключённым GC
Генерирует JSON-отчёты и диаграммы сравнения
Сохраняет результаты в
metrics/reports/releases/<version>/
Интерпретация результатов¶
Результаты бенчмарков включают следующие метрики:
- Среднее время (mean)
Среднее время выполнения операции. Основная метрика для сравнения производительности.
- Медиана (median)
Медианное значение времени выполнения. Менее чувствительна к выбросам, чем среднее.
- Стандартное отклонение (std)
Показывает стабильность измерений. Меньшее значение означает более предсказуемую производительность.
Рекомендации по использованию¶
- Для оптимизации
Используйте
run-typeдля фокусировки на конкретной области и--without-gcдля более точных измерений.- Для визуализации
Команда
diagrams-generateсоздаёт наглядные графики, удобные для презентаций и документации.- Для стабильных результатов
Закройте ресурсоёмкие приложения, используйте флаг
--without-gcи увеличивайте количество итераций через--iterations.
Добавление новых бенчмарков¶
Вы можете реализовать свои бенчмарки для тестирования специфичных юнитов библиотеки. Новые бенчмарки добавляются через декоратор @benchmarks.register:
1from metrics.benchmarks.entity import benchmarks
2
3@benchmarks.register(
4 type_="my_category",
5 description="Description of what is being measured"
6)
7def benchmark_my_operation() -> None:
8 # Code whose performance is being measured
9 pass
Важно
Бенчмарк должен быть импортирован в metrics/benchmarks/__init__.py для автоматической регистрации.