Skip to content

Releases: Stivo182/BenchmarkOneScript

v0.7.0

09 Mar 21:37

Choose a tag to compare

Новые возможности

Изолированные запуски бенчмарков (#39, #40)

  • Бенчмарки запускаются в отдельном процессе с настроенной средой.
  • Каждая итерация стратегии ХолодныйЗапуск выполняется в отдельном процессе.

Источники параметров из внешнего модуля/класса (#23, #38)

Параметры бенчмарков можно задавать через внешний модуль или класс с помощью аннотации &ИсточникПараметров.

Новые методы в API:

  • КонфигурацияБенчмарков: ДобавитьИсточникПараметров(), ИсточникиПараметров(), ОчиститьИсточникиПараметров()
  • ДескрипторБенчмарка: ДобавитьИсточникПараметров(), ИсточникиПараметров(), ОчиститьИсточникиПараметров()

Замер памяти через библиотеку allocs (#32)

Вместо собственного нативного модуля GcStats используется библиотека allocs. Нативный модуль GcStats (включая СтатистикаСборщикаМусора) полностью удалён.

Расширенная валидация входных параметров (#24)

Добавлена детальная проверка корректности параметров бенчмарка с информативными сообщениями об ошибках.

Новые методы

  • КонфигурацияБенчмарков.УдалитьМониторингПамяти()
  • КоллекцияДескрипторовБенчмарков.Очистить()
  • КоллекцияДескрипторовБенчмарков.НайтиПоТипуИИмени()
  • КоллекцияДескрипторовБенчмарков.Прочитать()
  • ДескрипторБенчмарка.Скопировать()
  • ПараметрБенчмарка.Представление()
  • ЗапускательБенчмарков.УстановитьПортОтладки()
  • МатематическиеФункцииБенчмарков.НольЕслиНеопределено()

Рефакторинг

  • Собственная реализация хронометра (#36) - удалена зависимость от Perfolizer, реализован хронометр на базе System.Diagnostics.Stopwatch.
  • Перевод модулей в классы - модули ИзвлекательДескрипторовБенчмарков, ИзвлекательКонфигурацииБенчмарков, ИсполняющаяСредаБенчмарков, КомбинаторПараметровБенчмарка преобразованы в классы.
  • Рефакторинг сериализатора (#28) - полностью переработана сериализация/десериализация.
  • Обработка ошибок в обработчиках событий - добавлена корректная обработка исключений.
  • Замена ПарсерОписанияПакета на библиотеку packageinfo.
  • Удалён AssemblyResolve из нативных компонентов.
  • Удалён ObjectExtension.cs (нативное расширение РасширениеОбъекта).

Breaking Changes

Бенчмаркинг (модуль)

Было Стало
Запустить() возвращает Структура Запустить() возвращает РезультатЗапускаБенчмарков
ПодключитьКласс(ПутьКФайлу) ПодключитьБенчмарк(ПутьКФайлу, ИмяТипа)
ЭтоВоркер() ЭтоДочернийПроцесс()

КонфигурацияБенчмарков

Переименованы:

Было Стало
ДобавитьВерсиюИсполняющейСреды(Версия, Наименование, ЭтоЭталон) ДобавитьИсполняющуюСреду(Версия, Наименование, ЭтоЭталон)
ВерсииИсполняющейСреды() ИсполняющиеСреды()
ОчиститьВерсииИсполняющейСреды() ОчиститьИсполняющиеСреды()
ЭталоннаяВерсияИсполняющейСреды() ЭталоннаяИсполняющаяСреда()

Удалены:

  • ВСтроку()
  • ДелегатыОбработчиковСобытия(ИмяСобытия, ОбъектБенчмарков, Контекст)
  • ИменаПараметров()
  • ИсполняющаяСредаОграниченаТекущей()

ДескрипторБенчмарка

Переименованы:

Было Стало
ТипОбъекта() ТипКласса()

ПараметрБенчмарка

Публичные поля заменены на методы:

Было Стало
Перем Имя Экспорт (поле) Функция Имя() Экспорт (метод)
Перем Значение Экспорт (поле) Функция Значение() Экспорт (метод)
Перем ЭтоПараметрМетода Экспорт (поле) Функция ЭтоПараметрМетода() Экспорт (метод)

КолонкаОтчетаБенчмарков

Было Стало
Перем ЗначениеДелегат Экспорт (тип Делегат) Перем ДелегатЗначение Экспорт (тип Действие)
Перем ПредставлениеЗначенияДелегат Экспорт (тип Делегат) Перем ДелегатПредставлениеЗначения Экспорт (тип Действие)
Значение(СтрокаРезультата, Колонка) Значение(РезультатЗапускаКейса, Колонка)

СериализаторРезультатовБенчмарков

Было Стало
СериализоватьВJSON(РезультатыБенчмарков, ИмяФайла) ЗаписатьВJson(РезультатЗапускаБенчмарков, ПолноеИмяФайла)
ДесериализоватьИзJSON(ИмяФайла, Конфигурация) ПрочитатьИзJson(ПолноеИмяФайла)
СериализоватьВXML(РезультатыБенчмарков, ИмяФайла) Удалён

СериализацияОбъектовБенчмаркинга (модуль)

Полностью переработан API:

Было Стало
ПодготовитьЗначение(Значение) ВJson(Значение)
ЗначениеСериализуется(Значение) ЭтоПримитив(Значение)
- ИзJson(Json, ТипОбъекта) (добавлено)
- ПривестиКПримитиву(Значение) (добавлено)

ЭкспортерыРезультатовБенчмарков (модуль)

Удалены:

  • Экспорт - XML-экспорт больше не поддерживается

Экспортеры результатов (Html, Json, Markdown)

Изменена сигнатура Записать() у всех трёх экспортеров:

Было Стало
Записать(РезультатыБенчмарков) Записать(РезультатЗапускаБенчмарков, ПолноеИмяФайла)

Обработчики событий

  • Тип Делегат в обработчиках событий больше не поддерживается - передавайте строку вида "ИмяКласса.ИмяМетода"

Строковое представление

  • Метод ВСтроку() удалён в классах: КонфигурацияБенчмарков, СредаОкруженияБенчмарков, СтатистикаБенчмарка.
  • Используйте глобальную функцию Строка() - она вызывает обработчик ОбработкаПолученияПредставления.

Удалённые классы

  • МенеджерРасшифровкиРезультатовБенчмарков - функционал интегрирован в новую систему результатов
  • ОберткаИсточникаБенчмарков - функционал перенесён
  • СериализаторКонфигурацииБенчмарков - заменён новой системой сериализации
  • ЭкспортерРезультатовБенчмарковВXml - XML-экспорт упразднён

Удалённые модули

  • ИзвлекательДескрипторовБенчмарков - переведён в класс
  • ИзвлекательКонфигурацииБенчмарков - переведён в класс
  • ИсполняющаяСредаБенчмарков - переведён в класс
  • КомбинаторПараметровБенчмарка - переведён в класс
  • КонсольныйВыводБенчмаркера - заменён на КонсольныйРепортерБенчмарков
  • ПарсерОписанияПакета - заменён библиотекой packageinfo

Аннотации

Добавлена:

  • &ИсточникПараметров - определяет метод-источник параметров для поля или метода бенчмарка

Удалена:

  • &ЭкспортXml - XML-экспорт упразднён

Изменён контекст обработчиков событий:

&ПередКаждым - структура Контекст:

Было Стало
ДескрипторБенчмарка (ДескрипторБенчмарка)
ПараметрыМетода (Массив из Произвольный)
Кейс (КейсБенчмарка)

&ПослеКаждого - структура Контекст:

Было Стало
ДескрипторБенчмарка (ДескрипторБенчмарка)
ПараметрыМетода (Массив из Произвольный)
Кейс (КейсБенчмарка)
Замеры (ТаблицаЗначений) Замеры (Массив из РезультатИтерацииКейса)

&ПослеВсех - структура Контекст:

Было Стало
Расшифровка (ТаблицаЗначений) Запуски (Массив из РезультатЗапускаКейса)

CLI-параметры

Было Стало
-c config <файл> --settings <файл>
--worker Удалён
Экспорт: md, json, xml, html Экспорт: md, json, html
- Добавлен --debug <порт>

Зависимости

Добавлены

Библиотека Версия
allocs 0.1.0
packageinfo 1.1.1
1commands 1.5.0 (была только dev-зависимость)
validate 0.3.0
reflector 0.7.1
collectionos 0.8.2

Обновлены

Библиотека Было Стало
cpuinfo 1.3.0 1.4.0
annotations 1.3.1 1.4.0
asserts 1.4.0 1.6.1
autumn 4.3.10 4.3.12
lambdas 0.3.2 0.3.3

Удалены

Библиотека Причина
xml-parser Удалён XML-экспорт
Нативный модуль GcStats Заменён библиотекой allocs
Зависимость Perfolizer (NuGet) Собственная реализация хронометра

Требования к среде

  • .NET: обновлён до 8.0 (был 6.0)
  • OneScript: >= 1.9.3

Документация и примеры

  • Реорганизована структура samples/benchmarks/ - добавлены подкаталоги examples/ и features/.
  • Добавлены примеры с документацией: бенчмарк механизмов вызова метода, поиска в коллекциях, сборки строк, хеш-функций.
  • Обновлена документация по: событиям, параметризации, метрикам, стратегиям запуска, отчётам, эталонам.

v0.6.0

25 Jun 21:36

Choose a tag to compare

What's Changed

  • Добавлена возможность запускать одновременно бенчмарки в нескольких версиях исполняющей среды OneScript с консолидацией результатов by @Stivo182 in #21
    Подробнее см. в документации

Full Changelog: v0.5.0...v0.6.0

v0.5.0

31 May 18:28

Choose a tag to compare

What's Changed

Full Changelog: v0.4.0...v0.5.0

v0.4.0

25 May 15:33

Choose a tag to compare

What's Changed

  • feat: Экспорт результатов в markdown, json, xml, html by @Stivo182 in #14
  • feat: Вывод статистики запуска бенчмарка в консоль by @Stivo182 in #15
  • feat: Изменено представление булево значений в отчете by @Stivo182 in #12
  • feat: Отображение колонки медианы при значительном отклонении от среднего by @Stivo182 in #13

Full Changelog: v0.3.1...v0.4.0

v0.3.1

15 May 13:34

Choose a tag to compare

What's Changed

  • fix: Исправление сортировки отчета by @Stivo182 in #11

Full Changelog: v0.3.0...v0.3.1

v0.3.0

14 May 20:54

Choose a tag to compare

What's Changed

  • feat: Добавление колонки RatioSD by @Stivo182 in #9
  • fix: Исправление расчета стандартной ошибки by @Stivo182 in #8
  • fix: Исправление сортировки по умолчанию by @Stivo182 in #10

Full Changelog: v0.2.0...v0.3.0

v0.2.0

06 May 21:29

Choose a tag to compare

What's Changed

  • feat: Выравнивание чисел в колонках по разрядности дробной части минимального значения in #7
  • fix: Исправления в статистике in 4188117

Full Changelog: v0.1.0...v0.2.0

v0.1.0

01 May 19:27
921ad3b

Choose a tag to compare

🚀