OpenHub
OpenHub
Войти

benchmarkпакет

с апстрима
автор: Dmitry Ivanovскачиваний: 0

Пакет лежит в основном пуле хаба: короткой формы достаточно, если хаб прописан сервером пакетов в opm.cfg.

opm install benchmark

Установка на opm младше 1.7.0

Легаси-флоу. Клиент младше 1.7.0 адрес пула в аргументе не разбирает: пул сначала прописывают сервером пакетов, и только потом ставят через него. На 1.7.0 и новее этот раздел не нужен — хватает команды из шапки страницы.

Добавьте пул сервером пакетов в opm.cfg. Порт продублирован в «Сервер»: у opm push поле «Порт» не читается.

{ "СервераПакетов": [ { "Имя": "default", "Сервер": "https://hub.1cdevelopers.ru", "Порт": 443, "ПутьНаСервере": "/api/v1/pools/default/download/", "РесурсПубликацииПакетов": "/api/v1/pools/default/push", "Приоритет": 1 } ] }

И ставьте пакет, указывая сервер:

opm install -m default benchmark

Описание

BenchmarkOneScript

Release Тестирование Статус порога качества Покрытие License: MIT

Библиотека для измерения производительности кода на OneScript, вдохновлённая BenchmarkDotNet, с поддержкой параметризации, мониторинга памяти и гибкой настройки тестов.

Возможности

  • Гибкая настройка: конфигурация тестов через аннотации, программный код и CLI.
  • Параметризованные тесты: запуск одних и тех же тестов с разными входными данными.
  • Мониторинг памяти: отслеживание аллокации памяти во время выполнения.
  • Мультиверсионное сравнение: запуск бенчмарков на указанных версиях исполняющей среды OneScript с консолидацией результатов.
  • Метрики: время выполнения (среднее, минимум, максимум), стандартное отклонение и ошибка, операций в секунду (Op/s), квартили и произвольные процентили.
  • Экспорт результатов: сохранение результатов выполнения бенчмарков в Markdown, JSON, HTML.

Быстрый старт

1. Установка

opm install benchmark

2. Создание бенчмарка

Создайте класс с методами, помеченными аннотацией &Бенчмарк, где каждый метод реализует тестируемую логику. В следующем примере мы сравниваем алгоритмы конкатенации строк через оператор + и метод СтрСоединить:

// СборкиСтрок.os

&Параметры(100, 1000)
Перем Количество Экспорт;
Перем Элементы;

&МониторингПамяти
Процедура ПриСозданииОбъекта()
КонецПроцедуры

&ПередКаждымКейсом
Процедура ПодготовитьДанные(Контекст) Экспорт

	Элементы = Новый Массив();

	Для к = 1 По Количество Цикл
		Элементы.Добавить("Элемент" + к);
	КонецЦикла;

КонецПроцедуры

&Бенчмарк
&Эталон
Процедура КонкатенацияВЦикле() Экспорт

	Результат = "";

	Для Каждого Элемент Из Элементы Цикл
		Результат = Результат + Элемент;
	КонецЦикла;

КонецПроцедуры

&Бенчмарк
Процедура ЧерезСтрСоединить() Экспорт

	Результат = СтрСоединить(Элементы);

КонецПроцедуры

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

Запустите бенчмарки одним из следующих способов:

CLI:

benchos run СборкиСтрок.os

API:

#Использовать benchmark
#Использовать "path/to/benchmarks"

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

Более подробно про запуск бенчмарков можно почитать в документации.

4. Просмотр результатов

После завершения тестов в консоли будет отображена подробная сводная таблица, оформленная в формате Markdown:

// Сводка
BenchmarkOneScript v0.7.0, OneScript v2.0.1-rc.2+702, Microsoft Windows NT 10.0.20348.0 \
Intel Core i7-8700 CPU 3.20GHz (Coffee Lake), 1 CPU, 12 logical and 6 physical cores

| Method             | Количество | Baseline |         Mean |       StdErr |       StdDev | Ratio |      Op/s |    Allocated |
|--------------------|-----------:|----------|-------------:|-------------:|-------------:|------:|----------:|-------------:|
| КонкатенацияВЦикле |        100 | Yes      |    28.782 us |    819.33 ns |   3,173.3 ns |  1.00 |  34,744.1 |    92.524 KB |
| ЧерезСтрСоединить  |        100 | No       |     4.078 us |     53.84 ns |     208.5 ns |  0.14 | 245,203.4 |     2.672 KB |
| КонкатенацияВЦикле |      1,000 | Yes      | 1,139.845 us | 30,999.38 ns | 120,060.1 ns |  1.00 |     877.3 | 9,623.388 KB |
| ЧерезСтрСоединить  |      1,000 | No       |    24.145 us |    633.03 ns |   2,451.7 ns |  0.02 |  41,416.1 |    20.250 KB |

// Легенда
Количество : Значение параметра 'Количество'
Mean       : Арифметическое среднее всех измерений
StdErr     : Стандартная ошибка всех измерений
StdDev     : Стандартное отклонение всех измерений
Ratio      : Среднее значение соотношений времени выполнения относительно эталона ([Mean] / [Baseline Mean])
Op/s       : Операций в секунду
Allocated  : Выделяемая память на одну операцию
1 us       : 1 Микросекунда
1 ns       : 1 Наносекунда