Skip to content

Latest commit

 

History

History
82 lines (60 loc) · 4.08 KB

README.md

File metadata and controls

82 lines (60 loc) · 4.08 KB

BenchmarkOneScript

На стадии разработки...

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

Возможности

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

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

Бенчмарки описываются в отдельном классе через экспортируемые процедуры с указанием аннотации &Бенчмарк. Посмотрите на следующий пример:

// КонкатенацияСтрок.os

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

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

&Бенчмарк
&Эталон
Процедура ОператорСложения() Экспорт
	Текст = "";
	Для НомерПодстроки = 1 По Количество Цикл
		Текст = Текст + Подстрока;
	КонецЦикла;
КонецПроцедуры

&Бенчмарк
Процедура МассивПодстрок() Экспорт
	МассивПодстрок = Новый Массив();
	Для НомерПодстроки = 1 По Количество Цикл
		МассивПодстрок.Добавить(Подстрока);
	КонецЦикла;

	Текст = СтрСоединить(МассивПодстрок);
КонецПроцедуры

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

CLI:

benchos run [FILE]

FILE - имя файла класса бенчмарков в текущем каталоге, либо полный путь к нему

API:

#Использовать benchmark
#Использовать "."

Бенчмаркинг.Запустить(Тип("КонкатенацияСтрок"));

После выполнения тестов выведется сводная таблица в формате Markdown:

BenchmarkOneScript v0.1.0, OneScript v2.0.0.567-rc7-29039316, Microsoft Windows NT 10.0.20348.0 \
Intel Core i7-8700 CPU 3.20GHz (Max: 3.19GHz) (Coffee Lake), 1 CPU, 12 logical and 6 physical cores

| Method           | Количество | Baseline |       Mean |     StdErr |      StdDev |     Median | Ratio |     Op/s |   Allocated |
|------------------|-----------:|----------|-----------:|-----------:|------------:|-----------:|------:|---------:|------------:|
| МассивПодстрок   |        100 | false    |   75.44 us |   66.16 ns |    362.4 ns |   74.74 us | 1.624 | 13,256.1 |    17.77 KB |
| ОператорСложения |        100 | true     |   46.51 us |   88.31 ns |    483.7 ns |   45.90 us |     1 | 21,499.5 |    126.5 KB |
| МассивПодстрок   |      1,000 | false    |   686.0 us |   691.6 ns |  3,787.9 ns |   680.1 us | 0.505 |  1,457.8 |    165.4 KB |
| ОператорСложения |      1,000 | true     | 1,365.8 us | 4,913.6 ns | 26,912.8 ns | 1,341.6 us |     1 |    732.1 | 11,809.0 KB |