mirror of
https://github.com/koloideal/Argenta.git
synced 2026-06-10 18:15:28 +03:00
174 lines
6.1 KiB
ReStructuredText
174 lines
6.1 KiB
ReStructuredText
Метрики
|
|
=======
|
|
|
|
Система метрик ``Argenta`` предоставляет инструменты для измерения производительности ключевых компонентов библиотеки. Это позволяет отслеживать регрессию/прогрессию производительности между релизами и оптимизировать критические участки кода.
|
|
|
|
-----
|
|
|
|
Запуск метрик
|
|
-------------
|
|
|
|
Для работы с метриками необходимо склонировать репозиторий и установить зависимости:
|
|
|
|
.. code-block:: bash
|
|
|
|
git clone https://github.com/koloideal/Argenta.git
|
|
cd Argenta
|
|
uv sync --group metrics
|
|
|
|
Запуск системы метрик:
|
|
|
|
.. code-block:: bash
|
|
|
|
python -m metrics
|
|
|
|
После запуска откроется интерактивная сессия с доступными командами для работы с бенчмарками.
|
|
|
|
-----
|
|
|
|
Доступные команды
|
|
-----------------
|
|
|
|
run-all
|
|
~~~~~~~
|
|
|
|
Запускает все зарегистрированные бенчмарки и выводит результаты в виде таблиц.
|
|
|
|
**Синтаксис:**
|
|
|
|
.. code-block:: shell
|
|
|
|
run-all [--without-gc] [--without-system-info]
|
|
|
|
**Флаги:**
|
|
|
|
- ``--without-gc`` — отключает сборщик мусора во время выполнения бенчмарков для более стабильных результатов
|
|
- ``--without-system-info`` — скрывает информацию о системе в выводе
|
|
|
|
-----
|
|
|
|
list-types
|
|
~~~~~~~~~~
|
|
|
|
Выводит список всех доступных типов бенчмарков с количеством тестов в каждой категории.
|
|
|
|
**Синтаксис:**
|
|
|
|
.. code-block:: shell
|
|
|
|
list-types
|
|
|
|
**Пример вывода:**
|
|
|
|
.. code-block:: text
|
|
|
|
Available benchmark types:
|
|
|
|
• flag_validation (9 benchmarks)
|
|
• input_command_parse (7 benchmarks)
|
|
• finds_appropriate_handler (5 benchmarks)
|
|
|
|
-----
|
|
|
|
run-type
|
|
~~~~~~~~
|
|
|
|
Запускает бенчмарки определённого типа.
|
|
|
|
**Синтаксис:**
|
|
|
|
.. code-block:: shell
|
|
|
|
run-type --type <type_name> [--without-gc] [--without-system-info]
|
|
|
|
**Флаги:**
|
|
|
|
- ``--type`` — тип бенчмарков для запуска (обязательный)
|
|
- ``--without-gc`` — отключает сборщик мусора
|
|
- ``--without-system-info`` — скрывает информацию о системе
|
|
|
|
-----
|
|
|
|
diagrams-generate
|
|
~~~~~~~~~~~~~~~~~
|
|
|
|
Генерирует визуальные диаграммы сравнения производительности для всех бенчмарков.
|
|
|
|
**Синтаксис:**
|
|
|
|
.. code-block:: shell
|
|
|
|
diagrams-generate [--iterations <number>] [--without-gc]
|
|
|
|
**Флаги:**
|
|
|
|
- ``--iterations`` — количество итераций для каждого бенчмарка (по умолчанию 100)
|
|
- ``--without-gc`` — отключает сборщик мусора
|
|
|
|
Диаграммы сохраняются в директорию ``metrics/reports/diagrams/<timestamp>/``.
|
|
|
|
-----
|
|
|
|
release-generate
|
|
~~~~~~~~~~~~~~~~
|
|
|
|
Генерирует полный отчёт о производительности для текущей версии библиотеки. Используется при подготовке релизов.
|
|
|
|
**Синтаксис:**
|
|
|
|
.. code-block:: shell
|
|
|
|
release-generate
|
|
|
|
Команда автоматически:
|
|
|
|
1. Определяет текущую версию библиотеки
|
|
2. Запускает все бенчмарки с 1000 итераций и отключённым GC
|
|
3. Генерирует JSON-отчёты и диаграммы сравнения
|
|
4. Сохраняет результаты в ``metrics/reports/releases/<version>/``
|
|
|
|
-----
|
|
|
|
Интерпретация результатов
|
|
-------------------------
|
|
|
|
Результаты бенчмарков включают следующие метрики:
|
|
|
|
**Среднее время (mean)**
|
|
Среднее время выполнения операции. Основная метрика для сравнения производительности.
|
|
|
|
**Медиана (median)**
|
|
Медианное значение времени выполнения. Менее чувствительна к выбросам, чем среднее.
|
|
|
|
**Стандартное отклонение (std)**
|
|
Показывает стабильность измерений. Меньшее значение означает более предсказуемую производительность.
|
|
|
|
-----
|
|
|
|
Рекомендации по использованию
|
|
------------------------------
|
|
|
|
**Для оптимизации**
|
|
Используйте ``run-type`` для фокусировки на конкретной области и ``--without-gc`` для более точных измерений.
|
|
|
|
**Для визуализации**
|
|
Команда ``diagrams-generate`` создаёт наглядные графики, удобные для презентаций и документации.
|
|
|
|
**Для стабильных результатов**
|
|
Закройте ресурсоёмкие приложения, используйте флаг ``--without-gc`` и увеличивайте количество итераций через ``--iterations``.
|
|
|
|
-----
|
|
|
|
Добавление новых бенчмарков
|
|
----------------------------
|
|
|
|
Вы можете реализовать свои бенчмарки для тестирования специфичных юнитов библиотеки. Новые бенчмарки добавляются через декоратор ``@benchmarks.register``:
|
|
|
|
.. literalinclude:: ../code_snippets/metrics/add_new_benchmark.py
|
|
:language: python
|
|
:linenos:
|
|
|
|
.. important::
|
|
|
|
Бенчмарк должен быть импортирован в ``metrics/benchmarks/__init__.py`` для автоматической регистрации.
|