Skip to content

Latest commit

 

History

History
161 lines (107 loc) · 7.19 KB

File metadata and controls

161 lines (107 loc) · 7.19 KB

Запуск бенчмарков

Документ описывает основные способы запуска бенчмарков через CLI и API.

CLI

Базовая форма запуска:

benchos run [OPTIONS] [FILE]

Подробное описание опций: CLI.

Аргумент [FILE]

Аргумент [FILE] задает источник бенчмарков. Можно передать один или несколько аргументов.

Поддерживаются следующие варианты:

  • имя файла в текущей директории: МойКласс.os;
  • имя без расширения, если файл МойКласс.os находится в текущей директории: МойКласс;
  • абсолютный или относительный путь к .os-файлу;
  • путь к каталогу с файлами бенчмарков.

Если передан каталог, CLI ищет в нем файлы *.os, а с опцией -r делает это рекурсивно.

Основные сценарии запуска

Запуск обычного файла бенчмарка

Это основной сценарий для CLI: файл содержит методы, помеченные &Бенчмарк.

benchos run МойКласс.os
benchos run /path/to/МойКласс.os

Запуск файла без аннотаций &Бенчмарк

Если benchos run получает явный путь к .os-файлу и в нем не найдено методов с &Бенчмарк, CLI пытается выполнить файл в упрощенном режиме.

Предполагается, что:

  • в файле в корне модуля расположен только алгоритм;
  • файл передан явно, а не найден при обходе каталога.

Особенности:

  • Если передан один такой файл, будет сформирован обычный отчет по этому алгоритму;
  • Если передано несколько .os-файлов, каждый алгоритм запускается изолированно, а результаты объединяются в один общий отчет;
  • Если вместе с .os-файлами переданы обычные бенчмарки с аннотацией &Бенчмарк, для них отчеты формируются отдельно.

Пример:

benchos run ./algorithms/БыстраяСортировка.os
benchos run ./algorithms/Алгоритм1.os ./algorithms/Алгоритм2.os

Запуск каталога

Если в [FILE] передан каталог, CLI запускает все найденные в нем .os-файлы как обычные файлы бенчмарков.

benchos run ./benchmarks
benchos run -r ./benchmarks

Важно:

  • при запуске каталога ожидаются обычные файлы бенчмарков с аннотациями;
  • автозапуск файлов без &Бенчмарк для каталога не применяется.

Примеры

# Запуск по имени файла в текущей директории
benchos run МойКласс.os

# Запуск по имени без расширения
benchos run МойКласс

# Запуск обычного файла без аннотаций &Бенчмарк
benchos run /path/to/Алгоритм.os

# Запуск каталога
benchos run /path/to/benchmarks

# Рекурсивный запуск каталога
benchos run -r /path/to/benchmarks

# Запуск с мониторингом памяти и экспортом
benchos run -m -e json,html /path/to/МойКласс.os

# Холодный запуск
benchos run --coldstart --iterationCount 10 /path/to/МойКласс.os

API

Основные точки входа:

  • Бенчмаркинг.Запустить(ИсточникБенчмарков, Конфигурация = Неопределено) - запуск по типу, дескриптору или коллекции дескрипторов;
  • Бенчмаркинг.ЗапуститьИзКаталога(Каталог, ИскатьВПодкаталогах = Ложь, Конфигурация = Неопределено) - запуск всех бенчмарков из каталога;
  • Бенчмаркинг.ПодключитьБенчмарк(ПутьКФайлу, ИмяТипа = "") - подключение .os-файла и получение его типа.

Запуск по типу

Результат = Бенчмаркинг.Запустить(Тип("МойКласс"));

Запуск отдельных бенчмарков

ДескрипторыБенчмарков = Новый КоллекцияДескрипторовБенчмарков(Тип("МойКласс"));

// Запуск конкретного бенчмарка по имени
ДескрипторБенчмарка = ДескрипторыБенчмарков.НайтиПоИмени("МойБенчмарк");
Результат = Бенчмаркинг.Запустить(ДескрипторБенчмарка);

// Запуск отфильтрованного списка
ДескрипторыБенчмарков.Фильтровать("Дескриптор -> Дескриптор.Категория() = ""МояКатегория""");
Результат = Бенчмаркинг.Запустить(ДескрипторыБенчмарков);

Подключение файла и запуск

ТипБенчмарков = Бенчмаркинг.ПодключитьБенчмарк("./benchmarks/МойКласс.os");
Результат = Бенчмаркинг.Запустить(ТипБенчмарков);

Запуск из каталога

// Запуск из каталога
Результаты = Бенчмаркинг.ЗапуститьИзКаталога("./benchmarks");

// Запуск из каталога, включая вложенные каталоги
Результаты = Бенчмаркинг.ЗапуститьИзКаталога("./benchmarks", Истина);

Запуск с конфигурацией

// Создание новой конфигурации
Конфигурация = Новый КонфигурацияБенчмарков();
Конфигурация.УстановитьКоличествоИтераций(10);

Результат = Бенчмаркинг.Запустить(Тип("МойКласс"), Конфигурация);
// Модификация существующей конфигурации
Конфигурация = Новый КонфигурацияБенчмарков(Тип("МойКласс"));
Конфигурация.УстановитьКоличествоИтераций(10);

Результат = Бенчмаркинг.Запустить(Тип("МойКласс"), Конфигурация);