Releases: Stivo182/BenchmarkOneScript
v0.7.0
Новые возможности
Изолированные запуски бенчмарков (#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
What's Changed
- Добавлена возможность запускать одновременно бенчмарки в нескольких версиях исполняющей среды OneScript с консолидацией результатов by @Stivo182 in #21
Подробнее см. в документации
Full Changelog: v0.5.0...v0.6.0
v0.5.0
v0.4.0
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