На стадии разработки...
Библиотека для измерения производительности кода на 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 |