Документ описывает основные способы запуска бенчмарков через CLI и API.
Базовая форма запуска:
benchos run [OPTIONS] [FILE]Подробное описание опций: CLI.
Аргумент [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Основные точки входа:
Бенчмаркинг.Запустить(ИсточникБенчмарков, Конфигурация = Неопределено)- запуск по типу, дескриптору или коллекции дескрипторов;Бенчмаркинг.ЗапуститьИзКаталога(Каталог, ИскатьВПодкаталогах = Ложь, Конфигурация = Неопределено)- запуск всех бенчмарков из каталога;Бенчмаркинг.ПодключитьБенчмарк(ПутьКФайлу, ИмяТипа = "")- подключение.os-файла и получение его типа.
Результат = Бенчмаркинг.Запустить(Тип("МойКласс"));ДескрипторыБенчмарков = Новый КоллекцияДескрипторовБенчмарков(Тип("МойКласс"));
// Запуск конкретного бенчмарка по имени
ДескрипторБенчмарка = ДескрипторыБенчмарков.НайтиПоИмени("МойБенчмарк");
Результат = Бенчмаркинг.Запустить(ДескрипторБенчмарка);
// Запуск отфильтрованного списка
ДескрипторыБенчмарков.Фильтровать("Дескриптор -> Дескриптор.Категория() = ""МояКатегория""");
Результат = Бенчмаркинг.Запустить(ДескрипторыБенчмарков);ТипБенчмарков = Бенчмаркинг.ПодключитьБенчмарк("./benchmarks/МойКласс.os");
Результат = Бенчмаркинг.Запустить(ТипБенчмарков);// Запуск из каталога
Результаты = Бенчмаркинг.ЗапуститьИзКаталога("./benchmarks");
// Запуск из каталога, включая вложенные каталоги
Результаты = Бенчмаркинг.ЗапуститьИзКаталога("./benchmarks", Истина);// Создание новой конфигурации
Конфигурация = Новый КонфигурацияБенчмарков();
Конфигурация.УстановитьКоличествоИтераций(10);
Результат = Бенчмаркинг.Запустить(Тип("МойКласс"), Конфигурация);// Модификация существующей конфигурации
Конфигурация = Новый КонфигурацияБенчмарков(Тип("МойКласс"));
Конфигурация.УстановитьКоличествоИтераций(10);
Результат = Бенчмаркинг.Запустить(Тип("МойКласс"), Конфигурация);