diff --git a/.bsl-language-server.json b/.bsl-language-server.json
index a748b4f..8eda71d 100644
--- a/.bsl-language-server.json
+++ b/.bsl-language-server.json
@@ -5,7 +5,11 @@
"listOfIncorrectFirstSymbol": ";|,\\s*\\S+"
},
"Typo": {
- "userWordsToIgnore": "Бенчмаркинг,Бенчмарк,бенчмарк,Бенчмарки,бенчмарки,Бенчмарков,бенчмарков,Бенчмарка,бенчмарка,Бенчмарку,Прогревочных,прогревочных,Запускатель,запускатель,Распарсить,распарсить,Регулярка,Воркер,Сериализовать,Сериализации,Сериализуемые,Сериализуется,Сериализацию,сериализацию,сериализуемым,сериализован,Несериализуемых,Валидатор,Алиас"
+ "userWordsToIgnore": "Дто,Бенчмаркинг,Бенчмарк,бенчмарк,Бенчмарки,бенчмарки,Бенчмарков,бенчмарков,Бенчмарка,бенчмарками,бенчмарка,Бенчмарку,Прогревочных,прогревочных,Десериализованный,Десериализуемые,Сериализуемый,Сериализуемое,Несериализуемое,Запускатель,запускатель,Распарсить,распарсить,Регулярка,Воркер,Десериализатор,Сериализовать,Сериализации,Сериализуемые,Сериализацией,Сериализуется,Сериализацию,сериализацию,сериализуемым,сериализован,Десериализации,Несериализуемых,Валидатор,Валидировать,Алиас"
+ },
+ "LatinAndCyrillicSymbolInWord": false,
+ "MagicNumber": {
+ "authorizedNumbers": "-1,0,1,2"
}
}
}
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 59f1e0f..4abd088 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -12,5 +12,6 @@ jobs:
with:
package_mask: "benchmark-*.ospx"
dotnet_version: "8.x.x"
+ locale: "en_US"
secrets:
PUSH_TOKEN: ${{ secrets.PUSH_TOKEN }}
\ No newline at end of file
diff --git a/.github/workflows/sonar.yml b/.github/workflows/sonar.yml
index 1c4d7bf..bdb75ea 100644
--- a/.github/workflows/sonar.yml
+++ b/.github/workflows/sonar.yml
@@ -13,5 +13,6 @@ jobs:
github_repository: Stivo182/BenchmarkOneScript
dotnet_version: "8.x.x"
build_package: true
+ locale: "en_US"
secrets:
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
\ No newline at end of file
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index aba7b2e..8e87019 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -15,4 +15,5 @@ jobs:
with:
oscript_version: ${{ matrix.oscript_version }}
dotnet_version: "8.x.x"
- build_package: true
\ No newline at end of file
+ build_package: true
+ locale: "en_US"
\ No newline at end of file
diff --git "a/BenchmarkArtifacts/\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\270\320\224\320\273\321\217\320\255\320\272\321\201\320\277\320\276\321\200\321\202\320\260-report.html" "b/BenchmarkArtifacts/\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\270\320\224\320\273\321\217\320\255\320\272\321\201\320\277\320\276\321\200\321\202\320\260-report.html"
new file mode 100644
index 0000000..c7857be
--- /dev/null
+++ "b/BenchmarkArtifacts/\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\270\320\224\320\273\321\217\320\255\320\272\321\201\320\277\320\276\321\200\321\202\320\260-report.html"
@@ -0,0 +1,128 @@
+
+
+
+
+
+
+
+
+BenchmarkOneScript v0.1.x-mock, OneScript v2.0.0-mock, Microsoft Windows NT 10.0.x.mock
+MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores
+
+
+
+|
+Method
+ |
+
+Значение
+ |
+
+П1
+ |
+
+П2
+ |
+
+П
+ |
+
+Mean
+ |
+
+StdErr
+ |
+
+StdDev
+ |
+
+Min
+ |
+
+Max
+ |
+
+Op/s
+ |
+
+
+
+
+|
+БенчмаркВторой
+ |
+
+100
+ |
+
+
+ |
+
+
+ |
+
+Массив
+ |
+
+1.0 ms
+ |
+
+0.0 ns
+ |
+
+0.0 ns
+ |
+
+1.0 ms
+ |
+
+1.0 ms
+ |
+
+1,000
+ |
+
+
+|
+БенчмаркПервый
+ |
+
+100
+ |
+
+1
+ |
+
+Тест
+ |
+
+
+ |
+
+1.0 ms
+ |
+
+0.0 ns
+ |
+
+0.0 ns
+ |
+
+1.0 ms
+ |
+
+1.0 ms
+ |
+
+1,000
+ |
+
+
+
+
+
\ No newline at end of file
diff --git a/README.md b/README.md
index 5e60e28..0123af0 100644
--- a/README.md
+++ b/README.md
@@ -26,7 +26,7 @@
- **Мониторинг памяти:** отслеживание аллокации памяти во время выполнения.
- **Мультиверсионное сравнение:** запуск бенчмарков на указанных версиях исполняющей среды OneScript с консолидацией результатов.
- **Метрики:** время выполнения (среднее, минимум, максимум), стандартное отклонение и ошибка, операций в секунду (Op/s), квартили и произвольные процентили.
-- **Экспорт результатов:** сохранение результатов выполнения бенчмарков в Markdown, JSON, XML, HTML.
+- **Экспорт результатов:** сохранение результатов выполнения бенчмарков в Markdown, JSON, HTML.
## 🚀 Быстрый старт
diff --git a/docs/CLI.md b/docs/CLI.md
index 0401683..00c9912 100644
--- a/docs/CLI.md
+++ b/docs/CLI.md
@@ -20,10 +20,10 @@ benchos run [OPTIONS] [FILE]
| `--throughput` | Стратегия выполнения [`ПропускнаяСпособность`](СтратегииЗапуска.md#пропускная-способность-throughput) | |
| `--coldstart` | Стратегия выполнения [`ХолодныйЗапуск`](СтратегииЗапуска.md#холодный-запуск-cold-start) | |
| `-m`, `--memory` | Включить [мониторинг использования памяти](МониторингПамяти.md) | |
-| `-e`, `--exporters` | Форматы [экспорта результатов](ЭкспортРезультатов.md) (`md`, `json`, `xml`, `html`) | `-e json,xml` |
+| `-e`, `--exporters` | Форматы [экспорта результатов](ЭкспортРезультатов.md) (`md`, `json`, `html`) | `-e json,html` |
| `-a`, `--artifacts` | Каталог для сохранения результатов | `-a path/to/file` |
| `-r`, `--recursive` | Рекурсивный поиск в поддиректориях | |
-| `-c`, `--config` | Файл конфигурации бенчмарков в формате JSON | `-c path/to/config.json` |
+| `--settings` | Файл настроек бенчмарков в формате JSON | `--settings path/to/settings.json` |
## Примеры
diff --git "a/docs/\320\236\320\261\321\200\320\260\320\261\320\276\321\202\321\207\320\270\320\272\320\270\320\241\320\276\320\261\321\213\321\202\320\270\320\271.md" "b/docs/\320\236\320\261\321\200\320\260\320\261\320\276\321\202\321\207\320\270\320\272\320\270\320\241\320\276\320\261\321\213\321\202\320\270\320\271.md"
index fe187d6..f8ed076 100644
--- "a/docs/\320\236\320\261\321\200\320\260\320\261\320\276\321\202\321\207\320\270\320\272\320\270\320\241\320\276\320\261\321\213\321\202\320\270\320\271.md"
+++ "b/docs/\320\236\320\261\321\200\320\260\320\261\320\276\321\202\321\207\320\270\320\272\320\270\320\241\320\276\320\261\321\213\321\202\320\270\320\271.md"
@@ -27,10 +27,11 @@
```bsl
// Параметры:
// * Контекст - Структура:
-// ** ДескрипторыБенчмарков - КоллекцияДескрипторовБенчмарков
// ** Конфигурация - КонфигурацияБенчмарков
-// ** Расшифровка - см. МенеджерРасшифровкиРезультатовБенчмарков.НоваяТаблицаРасшифровки
+// ** ДескрипторыБенчмарков - КоллекцияДескрипторовБенчмарков
+// ** Запуски - Массив из РезультатЗапускаБенчмаркаДто
// ** Отчет - ОтчетБенчмарков
+// ** СредаОкружения - СредаОкруженияБенчмарков
&ПослеВсех
Процедура ПослеВсех(Контекст) Экспорт
```
@@ -57,7 +58,7 @@
// * Контекст - Структура:
// ** ДескрипторБенчмарка - ДескрипторБенчмарка
// ** Параметры - Массив из ПараметрБенчмарка
-// ** Замеры - ТаблицаЗначений - см. МенеджерРасшифровкиРезультатовБенчмарков.НоваяТаблицаЗамеров
+// ** Замеры - Массив из РезультатИтерацииБенчмаркаДто
// ** Статистика - СтатистикаБенчмарка
&ПослеКаждого
Процедура ПослеКаждого(Контекст) Экспорт
diff --git "a/docs/\320\255\320\272\321\201\320\277\320\276\321\200\321\202\320\240\320\265\320\267\321\203\320\273\321\214\321\202\320\260\321\202\320\276\320\262.md" "b/docs/\320\255\320\272\321\201\320\277\320\276\321\200\321\202\320\240\320\265\320\267\321\203\320\273\321\214\321\202\320\260\321\202\320\276\320\262.md"
index 56ea7d5..e0cd4b0 100644
--- "a/docs/\320\255\320\272\321\201\320\277\320\276\321\200\321\202\320\240\320\265\320\267\321\203\320\273\321\214\321\202\320\260\321\202\320\276\320\262.md"
+++ "b/docs/\320\255\320\272\321\201\320\277\320\276\321\200\321\202\320\240\320\265\320\267\321\203\320\273\321\214\321\202\320\260\321\202\320\276\320\262.md"
@@ -25,7 +25,6 @@
```bsl
&ЭкспортMarkdown
&ЭкспортJson
-&ЭкспортXml
&ЭкспортHtml
Процедура ПриСозданииОбъекта()
```
@@ -35,7 +34,6 @@
```bsl
// Добавление экспортера (например, для JSON)
Конфигурация.ДобавитьЭкспортер(ЭкспортерыРезультатовБенчмарков.Json);
-// ЭкспортерыРезультатовБенчмарков.Xml
// ЭкспортерыРезультатовБенчмарков.Html
// ЭкспортерыРезультатовБенчмарков.Markdown
@@ -51,7 +49,6 @@
```bsl
&ЭкспортMarkdown
&ЭкспортJson
-&ЭкспортXml
&ЭкспортHtml
&КаталогАртефактов("./АртефкатыЗапускаБенчмарков")
Процедура ПриСозданииОбъекта()
@@ -85,5 +82,4 @@ Op/s : Операций в секунду
C:\myapp\АртефкатыЗапускаБенчмарков\ИмяКласса-report.html
C:\myapp\АртефкатыЗапускаБенчмарков\ИмяКласса-report.json
C:\myapp\АртефкатыЗапускаБенчмарков\ИмяКласса-report.md
-C:\myapp\АртефкатыЗапускаБенчмарков\ИмяКласса-report.xml
```
\ No newline at end of file
diff --git a/packagedef b/packagedef
index 4bcc7b0..df71714 100644
--- a/packagedef
+++ b/packagedef
@@ -7,6 +7,7 @@
.Версия("0.6.0")
.Автор("Dmitry Ivanov")
.АдресАвтора("https://github.com/Stivo182")
+ .АдресРепозитория("https://github.com/Stivo182/BenchmarkOneScript")
.Описание("Бенчмаркинг на OneScript")
.ВерсияСреды("1.9.3")
.ВключитьФайл("src/BenchmarkOneScript")
@@ -26,12 +27,14 @@
.ЗависитОт("coloratos", "0.3.0")
.ЗависитОт("fluent", "0.6.1")
.ЗависитОт("lambdas", "0.3.2")
- .ЗависитОт("xml-parser", "0.1.1")
.ЗависитОт("logos", "1.7.1")
.ЗависитОт("fs", "1.2.0")
.ЗависитОт("tempfiles", "1.1.1")
.ЗависитОт("packageinfo", "1.1.1")
.ЗависитОт("1commands", "1.5.0")
+ .ЗависитОт("validate", "0.3.0")
+ .ЗависитОт("reflector", "0.7.1")
+ .ЗависитОт("collectionos", "0.8.2")
.РазработкаЗависитОт("1testrunner")
.РазработкаЗависитОт("coverage")
.ИсполняемыйФайл("src/BenchmarkOneScript/cmd/main.os", "benchos")
\ No newline at end of file
diff --git "a/samples/api/\320\227\320\260\320\277\321\203\321\201\320\272\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262\320\222\320\242\320\265\321\201\321\202\320\260\321\205\320\237\321\200\320\270\320\274\320\265\321\200.os" "b/samples/api/\320\227\320\260\320\277\321\203\321\201\320\272\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262\320\222\320\242\320\265\321\201\321\202\320\260\321\205\320\237\321\200\320\270\320\274\320\265\321\200.os"
index 66da71d..93170e8 100644
--- "a/samples/api/\320\227\320\260\320\277\321\203\321\201\320\272\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262\320\222\320\242\320\265\321\201\321\202\320\260\321\205\320\237\321\200\320\270\320\274\320\265\321\200.os"
+++ "b/samples/api/\320\227\320\260\320\277\321\203\321\201\320\272\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262\320\222\320\242\320\265\321\201\321\202\320\260\321\205\320\237\321\200\320\270\320\274\320\265\321\200.os"
@@ -8,7 +8,7 @@
Порог = 150; // мс
Результат = Бенчмаркинг.Запустить(Тип("БенчмаркБазовый"));
- Статистика = Результат.Расшифровка[0].Статистика.ВМиллисекунды();
+ Статистика = Результат.Запуски[0].Статистика.ВМиллисекунды();
Ожидаем.Что(Статистика.Среднее).Меньше(Порог);
@@ -23,7 +23,7 @@
ДескрипторБенчмарка = ДескрипторыБенчмарков.НайтиПоИмени("А2");
Результат = Бенчмаркинг.Запустить(ДескрипторБенчмарка);
- Статистика = Результат.Расшифровка[0].Статистика.ВМиллисекунды();
+ Статистика = Результат.Запуски[0].Статистика.ВМиллисекунды();
Ожидаем.Что(Статистика.Среднее).Меньше(Порог);
diff --git "a/samples/benchmarks/\320\232\320\273\320\260\321\201\321\201\321\213/\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\255\320\272\321\201\320\277\320\276\321\200\321\202\320\240\320\265\320\267\321\203\320\273\321\214\321\202\320\260\321\202\320\276\320\262.os" "b/samples/benchmarks/\320\232\320\273\320\260\321\201\321\201\321\213/\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\255\320\272\321\201\320\277\320\276\321\200\321\202\320\240\320\265\320\267\321\203\320\273\321\214\321\202\320\260\321\202\320\276\320\262.os"
index 05fd177..6c4eb23 100644
--- "a/samples/benchmarks/\320\232\320\273\320\260\321\201\321\201\321\213/\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\255\320\272\321\201\320\277\320\276\321\200\321\202\320\240\320\265\320\267\321\203\320\273\321\214\321\202\320\260\321\202\320\276\320\262.os"
+++ "b/samples/benchmarks/\320\232\320\273\320\260\321\201\321\201\321\213/\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\255\320\272\321\201\320\277\320\276\321\200\321\202\320\240\320\265\320\267\321\203\320\273\321\214\321\202\320\260\321\202\320\276\320\262.os"
@@ -1,6 +1,5 @@
&ЭкспортMarkdown
&ЭкспортJson
-&ЭкспортXml
&ЭкспортHtml
Процедура ПриСозданииОбъекта()
КонецПроцедуры
diff --git a/src/BenchmarkOneScript.Extensions/ObjectExtension.cs b/src/BenchmarkOneScript.Extensions/ObjectExtension.cs
deleted file mode 100644
index 9bbca9d..0000000
--- a/src/BenchmarkOneScript.Extensions/ObjectExtension.cs
+++ /dev/null
@@ -1,28 +0,0 @@
-#if NET6_0_OR_GREATER
-using OneScript.Contexts;
-#endif
-
-using ScriptEngine.Machine;
-using ScriptEngine.Machine.Contexts;
-
-namespace BenchmarkOneScript.Extensions;
-
-[ContextClass("РасширениеОбъекта")]
-public class ObjectExtension : AutoContext
-{
- [ContextProperty("ХешКод", "HashCode")]
- public string HashCode => _Object.GetHashCode().ToString("X");
-
- IValue _Object;
-
- public ObjectExtension(IValue obj)
- {
- _Object = obj;
- }
-
- [ScriptConstructor]
- public static ObjectExtension Constructor(IValue obj)
- {
- return new ObjectExtension(obj);
- }
-}
\ No newline at end of file
diff --git "a/src/BenchmarkOneScript/annotations/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\237\320\276\321\201\320\273\320\265\320\222\321\201\320\265\321\205.os" "b/src/BenchmarkOneScript/annotations/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\237\320\276\321\201\320\273\320\265\320\222\321\201\320\265\321\205.os"
index 1dc370e..1217453 100644
--- "a/src/BenchmarkOneScript/annotations/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\237\320\276\321\201\320\273\320\265\320\222\321\201\320\265\321\205.os"
+++ "b/src/BenchmarkOneScript/annotations/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\237\320\276\321\201\320\273\320\265\320\222\321\201\320\265\321\205.os"
@@ -5,9 +5,9 @@
//
// Параметры:
// Контекст - Структура:
-// * ДескрипторыБенчмарков - КоллекцияДескрипторовБенчмарков
// * Конфигурация - КонфигурацияБенчмарков
-// * Расшифровка - см. МенеджерРасшифровкиРезультатовБенчмарков.НоваяТаблицаРасшифровки
+// * ДескрипторыБенчмарков - КоллекцияДескрипторовБенчмарков
+// * Запуски - Массив из РезультатЗапускаБенчмаркаДто
// * Отчет - ОтчетБенчмарков
// * СредаОкружения - СредаОкруженияБенчмарков
//
diff --git "a/src/BenchmarkOneScript/annotations/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\237\320\276\321\201\320\273\320\265\320\232\320\260\320\266\320\264\320\276\320\263\320\276.os" "b/src/BenchmarkOneScript/annotations/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\237\320\276\321\201\320\273\320\265\320\232\320\260\320\266\320\264\320\276\320\263\320\276.os"
index bf14c6c..77087d4 100644
--- "a/src/BenchmarkOneScript/annotations/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\237\320\276\321\201\320\273\320\265\320\232\320\260\320\266\320\264\320\276\320\263\320\276.os"
+++ "b/src/BenchmarkOneScript/annotations/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\237\320\276\321\201\320\273\320\265\320\232\320\260\320\266\320\264\320\276\320\263\320\276.os"
@@ -7,7 +7,7 @@
// Контекст - Структура:
// * ДескрипторБенчмарка - ДескрипторБенчмарка
// * Параметры - Массив из ПараметрБенчмарка
-// * Замеры - ТаблицаЗначений - см. МенеджерРасшифровкиРезультатовБенчмарков.НоваяТаблицаЗамеров
+// * Замеры - Массив из РезультатИтерацииБенчмаркаДто
// * Статистика - СтатистикаБенчмарка
//
// Примеры:
diff --git "a/src/BenchmarkOneScript/annotations/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\255\320\272\321\201\320\277\320\276\321\200\321\202Xml.os" "b/src/BenchmarkOneScript/annotations/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\255\320\272\321\201\320\277\320\276\321\200\321\202Xml.os"
deleted file mode 100644
index aa1ce58..0000000
--- "a/src/BenchmarkOneScript/annotations/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\255\320\272\321\201\320\277\320\276\321\200\321\202Xml.os"
+++ /dev/null
@@ -1,12 +0,0 @@
-// Автоматически генерирует отчет о результатах бенчмарков в формате XML (.xml).
-//
-// Применяется только к методу ПриСозданииОбъекта.
-//
-// Примеры:
-// &ЭкспортXml
-// Процедура ПриСозданииОбъекта()
-// // ...
-// КонецПроцедуры
-&Аннотация("ЭкспортXml")
-Процедура ПриСозданииОбъекта()
-КонецПроцедуры
\ No newline at end of file
diff --git "a/src/BenchmarkOneScript/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\227\320\260\320\277\321\203\321\201\320\272\320\260.os" "b/src/BenchmarkOneScript/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\227\320\260\320\277\321\203\321\201\320\272\320\260.os"
index 3ce69bf..e3a22be 100644
--- "a/src/BenchmarkOneScript/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\227\320\260\320\277\321\203\321\201\320\272\320\260.os"
+++ "b/src/BenchmarkOneScript/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\227\320\260\320\277\321\203\321\201\320\272\320\260.os"
@@ -28,7 +28,7 @@
&ТЧисло
Перем _КоличествоВызововЗаИтерацию; // Число
-&Опция(Имя = "e exporters", Описание = "Форматы экспорта результатов через запятую (md, json, xml, html)")
+&Опция(Имя = "e exporters", Описание = "Форматы экспорта результатов через запятую (md, json, html)")
&ТСтрока
Перем _Экспортеры; // Строка
@@ -44,9 +44,9 @@
&Флаг
Перем _ПропускнаяСпособность; // Булево, Неопределено
-&Опция(Имя = "c config", Описание = "Файл конфигурации бенчмарков в формате JSON")
+&Опция(Имя = "settings", Описание = "Файл настроек бенчмарков в формате JSON")
&ТСтрока
-Перем _ФайлКонфигурации; // Строка
+Перем _ФайлНастроек; // Строка
&Опция(Имя = "runtime", Описание = "Версии OneScript через запятую (current, stable, dev, x.x.x)")
&ТСтрока
@@ -62,8 +62,11 @@
&ТМассивСтрок
Перем _МассивФайлов; // Массив из Строка
+Перем _Лог; // Лог
+
&КомандаПриложения(Имя = "run", Описание = "Запуск бенчмарков")
Процедура ПриСозданииОбъекта()
+ _Лог = Логирование.ПолучитьЛог("oscript.lib.benchmark");
КонецПроцедуры
&ВыполнениеКоманды
@@ -71,42 +74,74 @@
УстановитьРежимВоркер();
- Для Каждого Каталог Из КаталогиБенчмарков() Цикл
- Бенчмаркинг.ЗапуститьИзКаталога(Каталог, _Рекурсивно, ПрочитатьКонфигурацию());
- КонецЦикла;
+ ПодключенныеТипы = ПодключитьТипы();
+ Настройки = ПрочитатьНастройки();
+ Конфигурация = ПрочитатьКонфигурацию(Настройки);
- Для Каждого ИмяФайла Из ФайлыБенчмарков() Цикл
- Тип = Бенчмаркинг.ПодключитьКласс(ИмяФайла);
- Если Не Тип = Неопределено Тогда
- Конфигурация = Новый КонфигурацияБенчмарков(Тип);
- Конфигурация.Объединить(ПрочитатьКонфигурацию());
- Бенчмаркинг.Запустить(Тип, Конфигурация);
+ Если ПодключенныеТипы.Количество() = 0 Тогда
+ _Лог.Предупреждение("Не найдено ни одного файла с бенчмарками для запуска");
+ Возврат;
+ КонецЕсли;
+
+ Для Каждого Тип Из ПодключенныеТипы Цикл
+
+ КонфигурацияТипа = Новый КонфигурацияБенчмарков(Тип);
+ КонфигурацияТипа.Объединить(Конфигурация);
+
+ Если Не Настройки = Неопределено И Настройки.ДескрипторыБенчмарков.Количество() > 0 Тогда
+ Источник = Настройки.ДескрипторыБенчмарков;
+ Иначе
+ Источник = Тип;
КонецЕсли;
+
+ Бенчмаркинг.Запустить(Источник, КонфигурацияТипа);
+
КонецЦикла;
КонецПроцедуры
-Функция КаталогиБенчмарков()
-
- Каталоги = Новый Массив();
+Функция ПрочитатьНастройки()
- Для Каждого ИмяФайла Из _МассивФайлов Цикл
- Если ФС.КаталогСуществует(ИмяФайла) Тогда
- Каталоги.Добавить(ИмяФайла);
+ Если Не ЗначениеЗаполнено(_ФайлНастроек) Тогда
+ Возврат Неопределено;
+ КонецЕсли;
+
+ Сериализатор = Новый СериализаторНастроекБенчмарков();
+ Возврат Сериализатор.ПрочитатьИзJson(_ФайлНастроек);
+
+КонецФункции
+
+Функция ПодключитьТипы()
+
+ ПодключенныеТипы = Новый Массив();
+ Для Каждого ИмяФайла Из НайтиФайлыБенчмарков() Цикл
+ Тип = Бенчмаркинг.ПодключитьКласс(ИмяФайла);
+ Если Не Тип = Неопределено Тогда
+ ПодключенныеТипы.Добавить(Тип);
КонецЕсли;
КонецЦикла;
- Возврат Каталоги;
+ Возврат ПодключенныеТипы;
КонецФункции
-Функция ФайлыБенчмарков()
+Функция НайтиФайлыБенчмарков()
Файлы = Новый Массив();
Для Каждого ИмяФайла Из _МассивФайлов Цикл
- Если Не ФС.КаталогСуществует(ИмяФайла) Тогда
- Файлы.Добавить(ПолноеИмяФайлаСценария(ИмяФайла));
+ Если ФС.КаталогСуществует(ИмяФайла) Тогда
+ НайденныеФайлы = НайтиФайлы(ИмяФайла, "*.os", _Рекурсивно);
+ Для Каждого Файл Из НайденныеФайлы Цикл
+ Если Файлы.Найти(Файл.ПолноеИмя) = Неопределено Тогда
+ Файлы.Добавить(Файл.ПолноеИмя);
+ КонецЕсли;
+ КонецЦикла;
+ Иначе
+ ПолноеИмяФайла = ПолноеИмяФайлаСценария(ИмяФайла);
+ Если Файлы.Найти(ПолноеИмяФайла) = Неопределено Тогда
+ Файлы.Добавить(ПолноеИмяФайла);
+ КонецЕсли;
КонецЕсли;
КонецЦикла;
@@ -131,11 +166,10 @@
КонецФункции
-Функция ПрочитатьКонфигурацию()
+Функция ПрочитатьКонфигурацию(Настройки)
- Если ЗначениеЗаполнено(_ФайлКонфигурации) Тогда
- Сериализатор = Новый СериализаторКонфигурацииБенчмарков();
- Конфигурация = Сериализатор.ДесериализоватьИзJSON(_ФайлКонфигурации);
+ Если Настройки <> Неопределено Тогда
+ Конфигурация = Настройки.Конфигурация;
Иначе
Конфигурация = Новый КонфигурацияБенчмарков();
КонецЕсли;
@@ -188,14 +222,13 @@
ДопустимыеЗначения = Новый Соответствие();
ДопустимыеЗначения.Вставить("markdown", "Markdown");
ДопустимыеЗначения.Вставить("json", "Json");
- ДопустимыеЗначения.Вставить("xml", "Xml");
ДопустимыеЗначения.Вставить("html", "Html");
Для Каждого Экспортер Из СтрРазделить(_Экспортеры, ", ", Ложь) Цикл
Имя = ДопустимыеЗначения[НРег(Экспортер)];
- ТекстОшибки = СтрШаблон("Неизвестный экспортер %1. Допустимые значения: markdown, json, xml, html", Экспортер);
+ ТекстОшибки = СтрШаблон("Неизвестный экспортер %1. Допустимые значения: markdown, json, html", Экспортер);
Ожидаем.Что(Имя, ТекстОшибки).Заполнено();
Конфигурация.ДобавитьЭкспортер(ЭкспортерыРезультатовБенчмарков[Имя]);
diff --git "a/src/BenchmarkOneScript/columns/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\273\320\276\320\275\320\272\320\260\320\236\321\202\321\207\320\265\321\202\320\260\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262RatioSD.os" "b/src/BenchmarkOneScript/columns/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\273\320\276\320\275\320\272\320\260\320\236\321\202\321\207\320\265\321\202\320\260\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262RatioSD.os"
index 3db6d92..c013fd2 100644
--- "a/src/BenchmarkOneScript/columns/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\273\320\276\320\275\320\272\320\260\320\236\321\202\321\207\320\265\321\202\320\260\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262RatioSD.os"
+++ "b/src/BenchmarkOneScript/columns/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\273\320\276\320\275\320\272\320\260\320\236\321\202\321\207\320\265\321\202\320\260\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262RatioSD.os"
@@ -26,22 +26,22 @@
// Возвращает значение колонки
//
// Параметры:
-// СтрокаРезультата - СтрокаТаблицыЗначений - см. МенеджерРасшифровкиРезультатовБенчмарков.НоваяТаблицаРасшифровки
+// РезультатЗапускаБенчмарка - РезультатЗапускаБенчмаркаДто
// Колонка - КолонкаОтчетаБенчмарков
//
// Возвращаемое значение:
// Произвольный
-Функция Значение(СтрокаРезультата, Колонка) Экспорт // BSLLS:UnusedParameters-off
+Функция Значение(РезультатЗапускаБенчмарка, Колонка) Экспорт // BSLLS:UnusedParameters-off
- Если СтрокаРезультата.ЭтоЭталон Тогда
+ Если РезультатЗапускаБенчмарка.ЭтоЭталон Тогда
Возврат 0;
КонецЕсли;
- Если СтрокаРезультата.Эталон = Неопределено Тогда
+ Если РезультатЗапускаБенчмарка.Эталон = Неопределено Тогда
Возврат "?";
КонецЕсли;
- Статистика = СтрокаРезультата.Статистика.Разделить(СтрокаРезультата.Эталон.Статистика);
+ Статистика = РезультатЗапускаБенчмарка.Статистика.Разделить(РезультатЗапускаБенчмарка.Эталон.Статистика);
Возврат Статистика.СтандартноеОтклонение;
diff --git "a/src/BenchmarkOneScript/columns/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\273\320\276\320\275\320\272\320\260\320\236\321\202\321\207\320\265\321\202\320\260\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262\320\222\320\265\321\200\321\201\320\270\321\217\320\230\321\201\320\277\320\276\320\273\320\275\321\217\321\216\321\211\320\265\320\271\320\241\321\200\320\265\320\264\321\213.os" "b/src/BenchmarkOneScript/columns/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\273\320\276\320\275\320\272\320\260\320\236\321\202\321\207\320\265\321\202\320\260\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262\320\222\320\265\321\200\321\201\320\270\321\217\320\230\321\201\320\277\320\276\320\273\320\275\321\217\321\216\321\211\320\265\320\271\320\241\321\200\320\265\320\264\321\213.os"
index 9dd095b..4d6b952 100644
--- "a/src/BenchmarkOneScript/columns/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\273\320\276\320\275\320\272\320\260\320\236\321\202\321\207\320\265\321\202\320\260\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262\320\222\320\265\321\200\321\201\320\270\321\217\320\230\321\201\320\277\320\276\320\273\320\275\321\217\321\216\321\211\320\265\320\271\320\241\321\200\320\265\320\264\321\213.os"
+++ "b/src/BenchmarkOneScript/columns/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\273\320\276\320\275\320\272\320\260\320\236\321\202\321\207\320\265\321\202\320\260\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262\320\222\320\265\321\200\321\201\320\270\321\217\320\230\321\201\320\277\320\276\320\273\320\275\321\217\321\216\321\211\320\265\320\271\320\241\321\200\320\265\320\264\321\213.os"
@@ -17,18 +17,18 @@
// Возвращает значение колонки
//
// Параметры:
-// СтрокаРезультата - СтрокаТаблицыЗначений - см. МенеджерРасшифровкиРезультатовБенчмарков.НоваяТаблицаРасшифровки
+// РезультатЗапускаБенчмарка - РезультатЗапускаБенчмаркаДто
// Колонка - КолонкаОтчетаБенчмарков
//
// Возвращаемое значение:
// Строка
-Функция Значение(СтрокаРезультата, Колонка) Экспорт // BSLLS:UnusedParameters-off
+Функция Значение(РезультатЗапускаБенчмарка, Колонка) Экспорт // BSLLS:UnusedParameters-off
- ИсполняющаяСреда = СтрокаРезультата.ИсполняющаяСреда;
+ ИсполняющаяСреда = РезультатЗапускаБенчмарка.ИсполняющаяСреда;
Если ЗначениеЗаполнено(ИсполняющаяСреда.Наименование) Тогда
Возврат СтрШаблон("%1 (%2)", ИсполняющаяСреда.Наименование, ИсполняющаяСреда.Версия);
КонецЕсли;
- Возврат СтрокаРезультата.ИсполняющаяСреда.Версия;
+ Возврат РезультатЗапускаБенчмарка.ИсполняющаяСреда.Версия;
КонецФункции
\ No newline at end of file
diff --git "a/src/BenchmarkOneScript/columns/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\273\320\276\320\275\320\272\320\260\320\236\321\202\321\207\320\265\321\202\320\260\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262\320\222\320\265\321\200\321\205\320\275\320\270\320\271\320\232\320\262\320\260\321\200\321\202\320\270\320\273\321\214.os" "b/src/BenchmarkOneScript/columns/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\273\320\276\320\275\320\272\320\260\320\236\321\202\321\207\320\265\321\202\320\260\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262\320\222\320\265\321\200\321\205\320\275\320\270\320\271\320\232\320\262\320\260\321\200\321\202\320\270\320\273\321\214.os"
index 1d6d1e3..e700db7 100644
--- "a/src/BenchmarkOneScript/columns/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\273\320\276\320\275\320\272\320\260\320\236\321\202\321\207\320\265\321\202\320\260\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262\320\222\320\265\321\200\321\205\320\275\320\270\320\271\320\232\320\262\320\260\321\200\321\202\320\270\320\273\321\214.os"
+++ "b/src/BenchmarkOneScript/columns/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\273\320\276\320\275\320\272\320\260\320\236\321\202\321\207\320\265\321\202\320\260\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262\320\222\320\265\321\200\321\205\320\275\320\270\320\271\320\232\320\262\320\260\321\200\321\202\320\270\320\273\321\214.os"
@@ -20,13 +20,13 @@
// Возвращает значение колонки
//
// Параметры:
-// СтрокаРезультата - СтрокаТаблицыЗначений - см. МенеджерРасшифровкиРезультатовБенчмарков.НоваяТаблицаРасшифровки
+// РезультатЗапускаБенчмарка - РезультатЗапускаБенчмаркаДто
// Колонка - КолонкаОтчетаБенчмарков
//
// Возвращаемое значение:
// Произвольный
-Функция Значение(СтрокаРезультата, Колонка) Экспорт // BSLLS:UnusedParameters-off
+Функция Значение(РезультатЗапускаБенчмарка, Колонка) Экспорт // BSLLS:UnusedParameters-off
- Возврат СтрокаРезультата.Статистика.ВНаносекунды().ВерхнийКвартиль;
+ Возврат РезультатЗапускаБенчмарка.Статистика.ВНаносекунды().ВерхнийКвартиль;
КонецФункции
\ No newline at end of file
diff --git "a/src/BenchmarkOneScript/columns/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\273\320\276\320\275\320\272\320\260\320\236\321\202\321\207\320\265\321\202\320\260\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262\320\222\321\213\320\264\320\265\320\273\321\217\320\265\320\274\320\260\321\217\320\237\320\260\320\274\321\217\321\202\321\214.os" "b/src/BenchmarkOneScript/columns/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\273\320\276\320\275\320\272\320\260\320\236\321\202\321\207\320\265\321\202\320\260\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262\320\222\321\213\320\264\320\265\320\273\321\217\320\265\320\274\320\260\321\217\320\237\320\260\320\274\321\217\321\202\321\214.os"
index cc0428b..ccbc31f 100644
--- "a/src/BenchmarkOneScript/columns/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\273\320\276\320\275\320\272\320\260\320\236\321\202\321\207\320\265\321\202\320\260\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262\320\222\321\213\320\264\320\265\320\273\321\217\320\265\320\274\320\260\321\217\320\237\320\260\320\274\321\217\321\202\321\214.os"
+++ "b/src/BenchmarkOneScript/columns/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\273\320\276\320\275\320\272\320\260\320\236\321\202\321\207\320\265\321\202\320\260\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262\320\222\321\213\320\264\320\265\320\273\321\217\320\265\320\274\320\260\321\217\320\237\320\260\320\274\321\217\321\202\321\214.os"
@@ -20,13 +20,13 @@
// Возвращает значение колонки
//
// Параметры:
-// СтрокаРезультата - СтрокаТаблицыЗначений - см. МенеджерРасшифровкиРезультатовБенчмарков.НоваяТаблицаРасшифровки
+// РезультатЗапускаБенчмарка - РезультатЗапускаБенчмаркаДто
// Колонка - КолонкаОтчетаБенчмарков
//
// Возвращаемое значение:
// Произвольный
-Функция Значение(СтрокаРезультата, Колонка) Экспорт // BSLLS:UnusedParameters-off
+Функция Значение(РезультатЗапускаБенчмарка, Колонка) Экспорт // BSLLS:UnusedParameters-off
- Возврат СтрокаРезультата.Статистика.ВыделяемаяПамять;
+ Возврат РезультатЗапускаБенчмарка.Статистика.ВыделяемаяПамять;
КонецФункции
\ No newline at end of file
diff --git "a/src/BenchmarkOneScript/columns/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\273\320\276\320\275\320\272\320\260\320\236\321\202\321\207\320\265\321\202\320\260\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262\320\232\320\260\321\202\320\265\320\263\320\276\321\200\320\270\321\217.os" "b/src/BenchmarkOneScript/columns/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\273\320\276\320\275\320\272\320\260\320\236\321\202\321\207\320\265\321\202\320\260\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262\320\232\320\260\321\202\320\265\320\263\320\276\321\200\320\270\321\217.os"
index 00b3aef..d30c49e 100644
--- "a/src/BenchmarkOneScript/columns/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\273\320\276\320\275\320\272\320\260\320\236\321\202\321\207\320\265\321\202\320\260\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262\320\232\320\260\321\202\320\265\320\263\320\276\321\200\320\270\321\217.os"
+++ "b/src/BenchmarkOneScript/columns/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\273\320\276\320\275\320\272\320\260\320\236\321\202\321\207\320\265\321\202\320\260\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262\320\232\320\260\321\202\320\265\320\263\320\276\321\200\320\270\321\217.os"
@@ -17,13 +17,13 @@
// Возвращает значение колонки
//
// Параметры:
-// СтрокаРезультата - СтрокаТаблицыЗначений - см. МенеджерРасшифровкиРезультатовБенчмарков.НоваяТаблицаРасшифровки
+// РезультатЗапускаБенчмарка - РезультатЗапускаБенчмаркаДто
// Колонка - КолонкаОтчетаБенчмарков
//
// Возвращаемое значение:
// Произвольный
-Функция Значение(СтрокаРезультата, Колонка) Экспорт // BSLLS:UnusedParameters-off
+Функция Значение(РезультатЗапускаБенчмарка, Колонка) Экспорт // BSLLS:UnusedParameters-off
- Возврат СтрокаРезультата.ДескрипторБенчмарка.Категория();
+ Возврат РезультатЗапускаБенчмарка.ДескрипторБенчмарка.Категория();
КонецФункции
\ No newline at end of file
diff --git "a/src/BenchmarkOneScript/columns/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\273\320\276\320\275\320\272\320\260\320\236\321\202\321\207\320\265\321\202\320\260\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262\320\232\320\276\321\215\321\204\321\204\320\270\321\206\320\270\320\265\320\275\321\202\320\237\321\200\320\276\320\270\320\267\320\262\320\276\320\264\320\270\321\202\320\265\320\273\321\214\320\275\320\276\321\201\321\202\320\270.os" "b/src/BenchmarkOneScript/columns/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\273\320\276\320\275\320\272\320\260\320\236\321\202\321\207\320\265\321\202\320\260\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262\320\232\320\276\321\215\321\204\321\204\320\270\321\206\320\270\320\265\320\275\321\202\320\237\321\200\320\276\320\270\320\267\320\262\320\276\320\264\320\270\321\202\320\265\320\273\321\214\320\275\320\276\321\201\321\202\320\270.os"
index bdc4af0..0598b29 100644
--- "a/src/BenchmarkOneScript/columns/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\273\320\276\320\275\320\272\320\260\320\236\321\202\321\207\320\265\321\202\320\260\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262\320\232\320\276\321\215\321\204\321\204\320\270\321\206\320\270\320\265\320\275\321\202\320\237\321\200\320\276\320\270\320\267\320\262\320\276\320\264\320\270\321\202\320\265\320\273\321\214\320\275\320\276\321\201\321\202\320\270.os"
+++ "b/src/BenchmarkOneScript/columns/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\273\320\276\320\275\320\272\320\260\320\236\321\202\321\207\320\265\321\202\320\260\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262\320\232\320\276\321\215\321\204\321\204\320\270\321\206\320\270\320\265\320\275\321\202\320\237\321\200\320\276\320\270\320\267\320\262\320\276\320\264\320\270\321\202\320\265\320\273\321\214\320\275\320\276\321\201\321\202\320\270.os"
@@ -24,22 +24,22 @@
// Возвращает значение колонки
//
// Параметры:
-// СтрокаРезультата - СтрокаТаблицыЗначений - см. МенеджерРасшифровкиРезультатовБенчмарков.НоваяТаблицаРасшифровки
+// РезультатЗапускаБенчмарка - РезультатЗапускаБенчмаркаДто
// Колонка - КолонкаОтчетаБенчмарков
//
// Возвращаемое значение:
// Произвольный
-Функция Значение(СтрокаРезультата, Колонка) Экспорт // BSLLS:UnusedParameters-off
+Функция Значение(РезультатЗапускаБенчмарка, Колонка) Экспорт // BSLLS:UnusedParameters-off
- Если СтрокаРезультата.ЭтоЭталон Тогда
+ Если РезультатЗапускаБенчмарка.ЭтоЭталон Тогда
Возврат 1;
КонецЕсли;
- Если СтрокаРезультата.Эталон = Неопределено Тогда
+ Если РезультатЗапускаБенчмарка.Эталон = Неопределено Тогда
Возврат "?";
КонецЕсли;
- Статистика = СтрокаРезультата.Статистика.Разделить(СтрокаРезультата.Эталон.Статистика);
+ Статистика = РезультатЗапускаБенчмарка.Статистика.Разделить(РезультатЗапускаБенчмарка.Эталон.Статистика);
Возврат Статистика.Среднее;
diff --git "a/src/BenchmarkOneScript/columns/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\273\320\276\320\275\320\272\320\260\320\236\321\202\321\207\320\265\321\202\320\260\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262\320\234\320\260\320\272\321\201.os" "b/src/BenchmarkOneScript/columns/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\273\320\276\320\275\320\272\320\260\320\236\321\202\321\207\320\265\321\202\320\260\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262\320\234\320\260\320\272\321\201.os"
index 8ae23b5..4f31cf7 100644
--- "a/src/BenchmarkOneScript/columns/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\273\320\276\320\275\320\272\320\260\320\236\321\202\321\207\320\265\321\202\320\260\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262\320\234\320\260\320\272\321\201.os"
+++ "b/src/BenchmarkOneScript/columns/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\273\320\276\320\275\320\272\320\260\320\236\321\202\321\207\320\265\321\202\320\260\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262\320\234\320\260\320\272\321\201.os"
@@ -20,13 +20,13 @@
// Возвращает значение колонки
//
// Параметры:
-// СтрокаРезультата - СтрокаТаблицыЗначений - см. МенеджерРасшифровкиРезультатовБенчмарков.НоваяТаблицаРасшифровки
+// РезультатЗапускаБенчмарка - РезультатЗапускаБенчмаркаДто
// Колонка - КолонкаОтчетаБенчмарков
//
// Возвращаемое значение:
// Произвольный
-Функция Значение(СтрокаРезультата, Колонка) Экспорт // BSLLS:UnusedParameters-off
+Функция Значение(РезультатЗапускаБенчмарка, Колонка) Экспорт // BSLLS:UnusedParameters-off
- Возврат СтрокаРезультата.Статистика.ВНаносекунды().Макс;
+ Возврат РезультатЗапускаБенчмарка.Статистика.ВНаносекунды().Макс;
КонецФункции
\ No newline at end of file
diff --git "a/src/BenchmarkOneScript/columns/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\273\320\276\320\275\320\272\320\260\320\236\321\202\321\207\320\265\321\202\320\260\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262\320\234\320\265\320\264\320\270\320\260\320\275\320\260.os" "b/src/BenchmarkOneScript/columns/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\273\320\276\320\275\320\272\320\260\320\236\321\202\321\207\320\265\321\202\320\260\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262\320\234\320\265\320\264\320\270\320\260\320\275\320\260.os"
index 8d47e23..893149c 100644
--- "a/src/BenchmarkOneScript/columns/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\273\320\276\320\275\320\272\320\260\320\236\321\202\321\207\320\265\321\202\320\260\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262\320\234\320\265\320\264\320\270\320\260\320\275\320\260.os"
+++ "b/src/BenchmarkOneScript/columns/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\273\320\276\320\275\320\272\320\260\320\236\321\202\321\207\320\265\321\202\320\260\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262\320\234\320\265\320\264\320\270\320\260\320\275\320\260.os"
@@ -22,13 +22,13 @@
// Возвращает значение колонки
//
// Параметры:
-// СтрокаРезультата - СтрокаТаблицыЗначений - см. МенеджерРасшифровкиРезультатовБенчмарков.НоваяТаблицаРасшифровки
+// РезультатЗапускаБенчмарка - РезультатЗапускаБенчмаркаДто
// Колонка - КолонкаОтчетаБенчмарков
//
// Возвращаемое значение:
// Произвольный
-Функция Значение(СтрокаРезультата, Колонка) Экспорт // BSLLS:UnusedParameters-off
+Функция Значение(РезультатЗапускаБенчмарка, Колонка) Экспорт // BSLLS:UnusedParameters-off
- Возврат СтрокаРезультата.Статистика.ВНаносекунды().Медиана;
+ Возврат РезультатЗапускаБенчмарка.Статистика.ВНаносекунды().Медиана;
КонецФункции
\ No newline at end of file
diff --git "a/src/BenchmarkOneScript/columns/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\273\320\276\320\275\320\272\320\260\320\236\321\202\321\207\320\265\321\202\320\260\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262\320\234\320\265\321\202\320\276\320\264.os" "b/src/BenchmarkOneScript/columns/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\273\320\276\320\275\320\272\320\260\320\236\321\202\321\207\320\265\321\202\320\260\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262\320\234\320\265\321\202\320\276\320\264.os"
index 4715fac..c64006a 100644
--- "a/src/BenchmarkOneScript/columns/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\273\320\276\320\275\320\272\320\260\320\236\321\202\321\207\320\265\321\202\320\260\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262\320\234\320\265\321\202\320\276\320\264.os"
+++ "b/src/BenchmarkOneScript/columns/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\273\320\276\320\275\320\272\320\260\320\236\321\202\321\207\320\265\321\202\320\260\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262\320\234\320\265\321\202\320\276\320\264.os"
@@ -17,13 +17,13 @@
// Возвращает значение колонки
//
// Параметры:
-// СтрокаРезультата - СтрокаТаблицыЗначений - см. МенеджерРасшифровкиРезультатовБенчмарков.НоваяТаблицаРасшифровки
+// РезультатЗапускаБенчмарка - РезультатЗапускаБенчмаркаДто
// Колонка - КолонкаОтчетаБенчмарков
//
// Возвращаемое значение:
// Произвольный
-Функция Значение(СтрокаРезультата, Колонка) Экспорт // BSLLS:UnusedParameters-off
+Функция Значение(РезультатЗапускаБенчмарка, Колонка) Экспорт // BSLLS:UnusedParameters-off
- Возврат СтрокаРезультата.ДескрипторБенчмарка.Метод();
+ Возврат РезультатЗапускаБенчмарка.ДескрипторБенчмарка.Метод();
КонецФункции
\ No newline at end of file
diff --git "a/src/BenchmarkOneScript/columns/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\273\320\276\320\275\320\272\320\260\320\236\321\202\321\207\320\265\321\202\320\260\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262\320\234\320\270\320\275.os" "b/src/BenchmarkOneScript/columns/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\273\320\276\320\275\320\272\320\260\320\236\321\202\321\207\320\265\321\202\320\260\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262\320\234\320\270\320\275.os"
index f2985fe..47f0875 100644
--- "a/src/BenchmarkOneScript/columns/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\273\320\276\320\275\320\272\320\260\320\236\321\202\321\207\320\265\321\202\320\260\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262\320\234\320\270\320\275.os"
+++ "b/src/BenchmarkOneScript/columns/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\273\320\276\320\275\320\272\320\260\320\236\321\202\321\207\320\265\321\202\320\260\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262\320\234\320\270\320\275.os"
@@ -20,13 +20,13 @@
// Возвращает значение колонки
//
// Параметры:
-// СтрокаРезультата - СтрокаТаблицыЗначений - см. МенеджерРасшифровкиРезультатовБенчмарков.НоваяТаблицаРасшифровки
+// РезультатЗапускаБенчмарка - РезультатЗапускаБенчмаркаДто
// Колонка - КолонкаОтчетаБенчмарков
//
// Возвращаемое значение:
// Произвольный
-Функция Значение(СтрокаРезультата, Колонка) Экспорт // BSLLS:UnusedParameters-off
+Функция Значение(РезультатЗапускаБенчмарка, Колонка) Экспорт // BSLLS:UnusedParameters-off
- Возврат СтрокаРезультата.Статистика.ВНаносекунды().Мин;
+ Возврат РезультатЗапускаБенчмарка.Статистика.ВНаносекунды().Мин;
КонецФункции
\ No newline at end of file
diff --git "a/src/BenchmarkOneScript/columns/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\273\320\276\320\275\320\272\320\260\320\236\321\202\321\207\320\265\321\202\320\260\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262\320\235\320\270\320\266\320\275\320\270\320\271\320\232\320\262\320\260\321\200\321\202\320\270\320\273\321\214.os" "b/src/BenchmarkOneScript/columns/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\273\320\276\320\275\320\272\320\260\320\236\321\202\321\207\320\265\321\202\320\260\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262\320\235\320\270\320\266\320\275\320\270\320\271\320\232\320\262\320\260\321\200\321\202\320\270\320\273\321\214.os"
index f56dee8..9334799 100644
--- "a/src/BenchmarkOneScript/columns/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\273\320\276\320\275\320\272\320\260\320\236\321\202\321\207\320\265\321\202\320\260\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262\320\235\320\270\320\266\320\275\320\270\320\271\320\232\320\262\320\260\321\200\321\202\320\270\320\273\321\214.os"
+++ "b/src/BenchmarkOneScript/columns/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\273\320\276\320\275\320\272\320\260\320\236\321\202\321\207\320\265\321\202\320\260\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262\320\235\320\270\320\266\320\275\320\270\320\271\320\232\320\262\320\260\321\200\321\202\320\270\320\273\321\214.os"
@@ -20,13 +20,13 @@
// Возвращает значение колонки
//
// Параметры:
-// СтрокаРезультата - СтрокаТаблицыЗначений - см. МенеджерРасшифровкиРезультатовБенчмарков.НоваяТаблицаРасшифровки
+// РезультатЗапускаБенчмарка - РезультатЗапускаБенчмаркаДто
// Колонка - КолонкаОтчетаБенчмарков
//
// Возвращаемое значение:
// Произвольный
-Функция Значение(СтрокаРезультата, Колонка) Экспорт // BSLLS:UnusedParameters-off
+Функция Значение(РезультатЗапускаБенчмарка, Колонка) Экспорт // BSLLS:UnusedParameters-off
- Возврат СтрокаРезультата.Статистика.ВНаносекунды().НижнийКвартиль;
+ Возврат РезультатЗапускаБенчмарка.Статистика.ВНаносекунды().НижнийКвартиль;
КонецФункции
\ No newline at end of file
diff --git "a/src/BenchmarkOneScript/columns/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\273\320\276\320\275\320\272\320\260\320\236\321\202\321\207\320\265\321\202\320\260\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262\320\236\320\277\320\265\321\200\320\260\321\206\320\270\320\271\320\222\320\241\320\265\320\272\321\203\320\275\320\264\321\203.os" "b/src/BenchmarkOneScript/columns/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\273\320\276\320\275\320\272\320\260\320\236\321\202\321\207\320\265\321\202\320\260\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262\320\236\320\277\320\265\321\200\320\260\321\206\320\270\320\271\320\222\320\241\320\265\320\272\321\203\320\275\320\264\321\203.os"
index 02aa94b..4150d5f 100644
--- "a/src/BenchmarkOneScript/columns/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\273\320\276\320\275\320\272\320\260\320\236\321\202\321\207\320\265\321\202\320\260\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262\320\236\320\277\320\265\321\200\320\260\321\206\320\270\320\271\320\222\320\241\320\265\320\272\321\203\320\275\320\264\321\203.os"
+++ "b/src/BenchmarkOneScript/columns/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\273\320\276\320\275\320\272\320\260\320\236\321\202\321\207\320\265\321\202\320\260\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262\320\236\320\277\320\265\321\200\320\260\321\206\320\270\320\271\320\222\320\241\320\265\320\272\321\203\320\275\320\264\321\203.os"
@@ -20,13 +20,13 @@
// Возвращает значение колонки
//
// Параметры:
-// СтрокаРезультата - СтрокаТаблицыЗначений - см. МенеджерРасшифровкиРезультатовБенчмарков.НоваяТаблицаРасшифровки
+// РезультатЗапускаБенчмарка - РезультатЗапускаБенчмаркаДто
// Колонка - КолонкаОтчетаБенчмарков
//
// Возвращаемое значение:
// Произвольный
-Функция Значение(СтрокаРезультата, Колонка) Экспорт // BSLLS:UnusedParameters-off
+Функция Значение(РезультатЗапускаБенчмарка, Колонка) Экспорт // BSLLS:UnusedParameters-off
- Возврат СтрокаРезультата.Статистика.ВНаносекунды().ОперацийВСекунду;
+ Возврат РезультатЗапускаБенчмарка.Статистика.ВНаносекунды().ОперацийВСекунду;
КонецФункции
\ No newline at end of file
diff --git "a/src/BenchmarkOneScript/columns/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\273\320\276\320\275\320\272\320\260\320\236\321\202\321\207\320\265\321\202\320\260\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200.os" "b/src/BenchmarkOneScript/columns/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\273\320\276\320\275\320\272\320\260\320\236\321\202\321\207\320\265\321\202\320\260\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200.os"
index 221833d..68bba33 100644
--- "a/src/BenchmarkOneScript/columns/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\273\320\276\320\275\320\272\320\260\320\236\321\202\321\207\320\265\321\202\320\260\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200.os"
+++ "b/src/BenchmarkOneScript/columns/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\273\320\276\320\275\320\272\320\260\320\236\321\202\321\207\320\265\321\202\320\260\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200.os"
@@ -21,16 +21,16 @@
// Возвращает значение колонки
//
// Параметры:
-// СтрокаРезультата - СтрокаТаблицыЗначений - см. МенеджерРасшифровкиРезультатовБенчмарков.НоваяТаблицаРасшифровки
+// РезультатЗапускаБенчмарка - РезультатЗапускаБенчмаркаДто
// Колонка - КолонкаОтчетаБенчмарков
//
// Возвращаемое значение:
// Произвольный
-Функция Значение(СтрокаРезультата, Колонка) Экспорт
+Функция Значение(РезультатЗапускаБенчмарка, Колонка) Экспорт
ИмяПараметра = ИмяПараметра(Колонка);
- Для Каждого Параметр Из СтрокаРезультата.Параметры Цикл
+ Для Каждого Параметр Из РезультатЗапускаБенчмарка.Параметры Цикл
Если Параметр.Имя = ИмяПараметра Тогда
Возврат Параметр.Значение;
КонецЕсли;
diff --git "a/src/BenchmarkOneScript/columns/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\273\320\276\320\275\320\272\320\260\320\236\321\202\321\207\320\265\321\202\320\260\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262\320\237\321\200\320\276\321\206\320\265\320\275\321\202\320\270\320\273\321\214.os" "b/src/BenchmarkOneScript/columns/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\273\320\276\320\275\320\272\320\260\320\236\321\202\321\207\320\265\321\202\320\260\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262\320\237\321\200\320\276\321\206\320\265\320\275\321\202\320\270\320\273\321\214.os"
index f835c83..df86a81 100644
--- "a/src/BenchmarkOneScript/columns/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\273\320\276\320\275\320\272\320\260\320\236\321\202\321\207\320\265\321\202\320\260\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262\320\237\321\200\320\276\321\206\320\265\320\275\321\202\320\270\320\273\321\214.os"
+++ "b/src/BenchmarkOneScript/columns/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\273\320\276\320\275\320\272\320\260\320\236\321\202\321\207\320\265\321\202\320\260\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262\320\237\321\200\320\276\321\206\320\265\320\275\321\202\320\270\320\273\321\214.os"
@@ -24,16 +24,16 @@
// Возвращает значение колонки
//
// Параметры:
-// СтрокаРезультата - СтрокаТаблицыЗначений - см. МенеджерРасшифровкиРезультатовБенчмарков.НоваяТаблицаРасшифровки
+// РезультатЗапускаБенчмарка - РезультатЗапускаБенчмаркаДто
// Колонка - КолонкаОтчетаБенчмарков
//
// Возвращаемое значение:
// Число
-Функция Значение(СтрокаРезультата, Колонка) Экспорт // BSLLS:UnusedParameters-off
+Функция Значение(РезультатЗапускаБенчмарка, Колонка) Экспорт // BSLLS:UnusedParameters-off
Процентиль = ПроцентильПоКолонке(Колонка.Имя);
- Возврат СтрокаРезультата.Статистика.ВНаносекунды().Квантиль(Процентиль / 100);
+ Возврат РезультатЗапускаБенчмарка.Статистика.ВНаносекунды().Квантиль(Процентиль / 100);
КонецФункции
diff --git "a/src/BenchmarkOneScript/columns/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\273\320\276\320\275\320\272\320\260\320\236\321\202\321\207\320\265\321\202\320\260\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262\320\241\321\200\320\265\320\264\320\275\320\265\320\265.os" "b/src/BenchmarkOneScript/columns/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\273\320\276\320\275\320\272\320\260\320\236\321\202\321\207\320\265\321\202\320\260\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262\320\241\321\200\320\265\320\264\320\275\320\265\320\265.os"
index 9c0d647..77a503a 100644
--- "a/src/BenchmarkOneScript/columns/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\273\320\276\320\275\320\272\320\260\320\236\321\202\321\207\320\265\321\202\320\260\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262\320\241\321\200\320\265\320\264\320\275\320\265\320\265.os"
+++ "b/src/BenchmarkOneScript/columns/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\273\320\276\320\275\320\272\320\260\320\236\321\202\321\207\320\265\321\202\320\260\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262\320\241\321\200\320\265\320\264\320\275\320\265\320\265.os"
@@ -20,13 +20,13 @@
// Возвращает значение колонки
//
// Параметры:
-// СтрокаРезультата - СтрокаТаблицыЗначений - см. МенеджерРасшифровкиРезультатовБенчмарков.НоваяТаблицаРасшифровки
+// РезультатЗапускаБенчмарка - РезультатЗапускаБенчмаркаДто
// Колонка - КолонкаОтчетаБенчмарков
//
// Возвращаемое значение:
// Произвольный
-Функция Значение(СтрокаРезультата, Колонка) Экспорт // BSLLS:UnusedParameters-off
+Функция Значение(РезультатЗапускаБенчмарка, Колонка) Экспорт // BSLLS:UnusedParameters-off
- Возврат СтрокаРезультата.Статистика.ВНаносекунды().Среднее;
+ Возврат РезультатЗапускаБенчмарка.Статистика.ВНаносекунды().Среднее;
КонецФункции
\ No newline at end of file
diff --git "a/src/BenchmarkOneScript/columns/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\273\320\276\320\275\320\272\320\260\320\236\321\202\321\207\320\265\321\202\320\260\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\320\260\321\217\320\236\321\210\320\270\320\261\320\272\320\260.os" "b/src/BenchmarkOneScript/columns/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\273\320\276\320\275\320\272\320\260\320\236\321\202\321\207\320\265\321\202\320\260\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\320\260\321\217\320\236\321\210\320\270\320\261\320\272\320\260.os"
index 0d24a5a..e38ace5 100644
--- "a/src/BenchmarkOneScript/columns/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\273\320\276\320\275\320\272\320\260\320\236\321\202\321\207\320\265\321\202\320\260\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\320\260\321\217\320\236\321\210\320\270\320\261\320\272\320\260.os"
+++ "b/src/BenchmarkOneScript/columns/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\273\320\276\320\275\320\272\320\260\320\236\321\202\321\207\320\265\321\202\320\260\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\320\260\321\217\320\236\321\210\320\270\320\261\320\272\320\260.os"
@@ -20,13 +20,13 @@
// Возвращает значение колонки
//
// Параметры:
-// СтрокаРезультата - СтрокаТаблицыЗначений - см. МенеджерРасшифровкиРезультатовБенчмарков.НоваяТаблицаРасшифровки
+// РезультатЗапускаБенчмарка - РезультатЗапускаБенчмаркаДто
// Колонка - КолонкаОтчетаБенчмарков
//
// Возвращаемое значение:
// Произвольный
-Функция Значение(СтрокаРезультата, Колонка) Экспорт // BSLLS:UnusedParameters-off
+Функция Значение(РезультатЗапускаБенчмарка, Колонка) Экспорт // BSLLS:UnusedParameters-off
- Возврат СтрокаРезультата.Статистика.ВНаносекунды().СтандартнаяОшибкаСреднего;
+ Возврат РезультатЗапускаБенчмарка.Статистика.ВНаносекунды().СтандартнаяОшибкаСреднего;
КонецФункции
\ No newline at end of file
diff --git "a/src/BenchmarkOneScript/columns/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\273\320\276\320\275\320\272\320\260\320\236\321\202\321\207\320\265\321\202\320\260\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\320\276\320\265\320\236\321\202\320\272\320\273\320\276\320\275\320\265\320\275\320\270\320\265.os" "b/src/BenchmarkOneScript/columns/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\273\320\276\320\275\320\272\320\260\320\236\321\202\321\207\320\265\321\202\320\260\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\320\276\320\265\320\236\321\202\320\272\320\273\320\276\320\275\320\265\320\275\320\270\320\265.os"
index a0be12e..9ad6672 100644
--- "a/src/BenchmarkOneScript/columns/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\273\320\276\320\275\320\272\320\260\320\236\321\202\321\207\320\265\321\202\320\260\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\320\276\320\265\320\236\321\202\320\272\320\273\320\276\320\275\320\265\320\275\320\270\320\265.os"
+++ "b/src/BenchmarkOneScript/columns/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\273\320\276\320\275\320\272\320\260\320\236\321\202\321\207\320\265\321\202\320\260\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\320\276\320\265\320\236\321\202\320\272\320\273\320\276\320\275\320\265\320\275\320\270\320\265.os"
@@ -20,13 +20,13 @@
// Возвращает значение колонки
//
// Параметры:
-// СтрокаРезультата - СтрокаТаблицыЗначений - см. МенеджерРасшифровкиРезультатовБенчмарков.НоваяТаблицаРасшифровки
+// РезультатЗапускаБенчмарка - РезультатЗапускаБенчмаркаДто
// Колонка - КолонкаОтчетаБенчмарков
//
// Возвращаемое значение:
// Произвольный
-Функция Значение(СтрокаРезультата, Колонка) Экспорт // BSLLS:UnusedParameters-off
+Функция Значение(РезультатЗапускаБенчмарка, Колонка) Экспорт // BSLLS:UnusedParameters-off
- Возврат СтрокаРезультата.Статистика.ВНаносекунды().СтандартноеОтклонение;
+ Возврат РезультатЗапускаБенчмарка.Статистика.ВНаносекунды().СтандартноеОтклонение;
КонецФункции
\ No newline at end of file
diff --git "a/src/BenchmarkOneScript/columns/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\273\320\276\320\275\320\272\320\260\320\236\321\202\321\207\320\265\321\202\320\260\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262\320\255\321\202\320\260\320\273\320\276\320\275.os" "b/src/BenchmarkOneScript/columns/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\273\320\276\320\275\320\272\320\260\320\236\321\202\321\207\320\265\321\202\320\260\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262\320\255\321\202\320\260\320\273\320\276\320\275.os"
index a24378e..d2d966a 100644
--- "a/src/BenchmarkOneScript/columns/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\273\320\276\320\275\320\272\320\260\320\236\321\202\321\207\320\265\321\202\320\260\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262\320\255\321\202\320\260\320\273\320\276\320\275.os"
+++ "b/src/BenchmarkOneScript/columns/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\273\320\276\320\275\320\272\320\260\320\236\321\202\321\207\320\265\321\202\320\260\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262\320\255\321\202\320\260\320\273\320\276\320\275.os"
@@ -18,13 +18,13 @@
// Возвращает значение колонки
//
// Параметры:
-// СтрокаРезультата - СтрокаТаблицыЗначений - см. МенеджерРасшифровкиРезультатовБенчмарков.НоваяТаблицаРасшифровки
+// РезультатЗапускаБенчмарка - РезультатЗапускаБенчмаркаДто
// Колонка - КолонкаОтчетаБенчмарков
//
// Возвращаемое значение:
// Произвольный
-Функция Значение(СтрокаРезультата, Колонка) Экспорт // BSLLS:UnusedParameters-off
+Функция Значение(РезультатЗапускаБенчмарка, Колонка) Экспорт // BSLLS:UnusedParameters-off
- Возврат СтрокаРезультата.ЭтоЭталон;
+ Возврат РезультатЗапускаБенчмарка.ЭтоЭталон;
КонецФункции
\ No newline at end of file
diff --git "a/src/BenchmarkOneScript/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\222\320\260\320\273\320\270\320\264\320\260\321\202\320\276\321\200\320\227\320\260\320\277\321\203\321\201\320\272\320\260\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262.os" "b/src/BenchmarkOneScript/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\222\320\260\320\273\320\270\320\264\320\260\321\202\320\276\321\200\320\227\320\260\320\277\321\203\321\201\320\272\320\260\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262.os"
index 523d3b8..914bbb7 100644
--- "a/src/BenchmarkOneScript/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\222\320\260\320\273\320\270\320\264\320\260\321\202\320\276\321\200\320\227\320\260\320\277\321\203\321\201\320\272\320\260\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262.os"
+++ "b/src/BenchmarkOneScript/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\222\320\260\320\273\320\270\320\264\320\260\321\202\320\276\321\200\320\227\320\260\320\277\321\203\321\201\320\272\320\260\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262.os"
@@ -152,9 +152,9 @@
Процедура ПроверитьПараметрНаВозможностьСериализации(Параметр)
ШаблонОшибки =
- "Значение параметра <%1> должно быть сериализуемым для определения эталонов между разными версиями OneScript";
+ "Значение параметра <%1> должно быть примитивным для определения эталонов между разными версиями OneScript";
- Если Не СериализацияОбъектовБенчмаркинга.ЗначениеСериализуется(Параметр.Значение) Тогда
+ Если Не СериализацияОбъектовБенчмаркинга.ЭтоПримитив(Параметр.Значение) Тогда
ТекстОшибки = СтрШаблон(ШаблонОшибки, Параметр.Имя);
Если _СписокОшибок.Найти(ТекстОшибки) = Неопределено Тогда
_СписокОшибок.Добавить(ТекстОшибки);
@@ -173,7 +173,7 @@
КонецЕсли;
Для Каждого ОбработчикСобытия Из _Конфигурация.ОбработчикиСобытий() Цикл
- Если ТипЗнч(ОбработчикСобытия.Обработчик) = Тип("Делегат") Тогда
+ Если ТипЗнч(ОбработчикСобытия.Обработчик) <> Тип("Строка") Тогда
_СписокОшибок.Добавить(ТекстОшибки);
Возврат;
КонецЕсли;
diff --git "a/src/BenchmarkOneScript/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\224\320\265\321\201\320\272\321\200\320\270\320\277\321\202\320\276\321\200\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\260.os" "b/src/BenchmarkOneScript/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\224\320\265\321\201\320\272\321\200\320\270\320\277\321\202\320\276\321\200\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\260.os"
index b2280d6..99a44a8 100644
--- "a/src/BenchmarkOneScript/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\224\320\265\321\201\320\272\321\200\320\270\320\277\321\202\320\276\321\200\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\260.os"
+++ "b/src/BenchmarkOneScript/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\224\320\265\321\201\320\272\321\200\320\270\320\277\321\202\320\276\321\200\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\260.os"
@@ -1,21 +1,47 @@
#Использовать delegate
+#Использовать validate
+#Использовать reflector
+#Использовать "../../dto"
+&Сериализуемое("Type")
+&Тип("Тип")
+&Заполнено
Перем _Тип; // Тип - Класс бенчмарков
+
+&Сериализуемое("Method")
+&Тип("Строка")
+&Заполнено
Перем _Метод; // Строка - Метод бенчмарка
+
+&Сериализуемое("Baseline")
+&Тип("Булево")
Перем _ЭтоЭталон; // Булево
+
+&Сериализуемое("Category")
+&Тип("Строка")
Перем _Категория; // Строка
-Перем _НаборыПараметров; // Массив из Массив из ПараметрБенчмарка
-Перем _ИменаПараметров; // Массив из Строка
+
+&Сериализуемое("ParameterSets")
+&Тип("Массив")
+&ДляКаждого
+&Тип("ПараметрыМетодаБенчмарка")
+Перем _НаборыПараметров; // Массив из ПараметрыМетодаБенчмарка
+
+&Сериализуемое("ParameterSources")
+&Тип("Массив")
Перем _ИсточникиПараметров; // Массив из Строка, Делегат
+&Несериализуемое
+Перем _ИменаПараметров; // Массив из Строка
+
#Область Конструктор
// Дескриптор бенчмарка
//
// Параметры:
-// Объект - Тип, Произвольный - Тип или экземпляр класса бенчмарков
+// Объект - Произвольный - Тип или экземпляр класса бенчмарков
// Метод - Строка - Метод бенчмарка
-Процедура ПриСозданииОбъекта(Объект, Метод)
+Процедура ПриСозданииОбъекта(Объект = Неопределено, Метод = "")
_Тип = ?(ТипЗнч(Объект) = Тип("Тип"), Объект, ТипЗнч(Объект));
_Метод = Метод;
@@ -24,7 +50,9 @@
_Категория = "";
_ИсточникиПараметров = Новый Массив();
- ИзвлечьИменаПараметров(Объект);
+ Если Не Объект = Неопределено Тогда
+ ИзвлечьИменаПараметров(Объект);
+ КонецЕсли;
КонецПроцедуры
@@ -51,7 +79,7 @@
// Наборы параметров, используемые для запуска бенчмарков с различными входными данными.
//
// Возвращаемое значение:
-// Массив из Массив из ПараметрБенчмарка
+// Массив из ПараметрыМетодаБенчмарка
Функция НаборыПараметров() Экспорт
Возврат Новый Массив(Новый ФиксированныйМассив(_НаборыПараметров));
КонецФункции
@@ -67,7 +95,7 @@
// ЭтотОбъект
Функция ДобавитьПараметры(Параметры) Экспорт
- МассивПараметров = Новый Массив();
+ ПараметрыМетода = Новый ПараметрыМетодаБенчмарка();
КоличествоТребуемыхПараметров = _ИменаПараметров.Количество();
Если КоличествоТребуемыхПараметров = 0 Тогда
@@ -90,7 +118,7 @@
Для ИндексПараметра = 0 По Параметры.ВГраница() Цикл
Параметр = Новый ПараметрБенчмарка(_ИменаПараметров[ИндексПараметра], Параметры[ИндексПараметра], Истина);
- МассивПараметров.Добавить(Параметр);
+ ПараметрыМетода.Добавить(Параметр);
КонецЦикла;
Иначе
@@ -104,11 +132,11 @@
КонецЕсли;
Параметр = Новый ПараметрБенчмарка(_ИменаПараметров[0], Параметры, Истина);
- МассивПараметров.Добавить(Параметр);
+ ПараметрыМетода.Добавить(Параметр);
КонецЕсли;
- _НаборыПараметров.Добавить(МассивПараметров);
+ _НаборыПараметров.Добавить(ПараметрыМетода);
Возврат ЭтотОбъект;
@@ -243,6 +271,29 @@
#Область СлужебныеПроцедурыИФункции
+#Область Сериализация
+
+&ПослеДесериализации
+Процедура ПослеДесериализации() Экспорт
+
+ Валидировать();
+ ИзвлечьИменаПараметров(Новый(_Тип));
+
+КонецПроцедуры
+
+Процедура Валидировать()
+
+ Валидатор = Новый Валидатор;
+
+ Результат = Валидатор.Валидировать(ЭтотОбъект);
+ Если Результат.Количество() > 0 Тогда
+ ВызватьИсключение Валидатор.ОписаниеОшибокВалидации(Результат);
+ КонецЕсли;
+
+КонецПроцедуры
+
+#КонецОбласти
+
Процедура ИзвлечьИменаПараметров(Объект)
РефлекторОбъекта = Новый РефлекторОбъекта(Объект);
diff --git "a/src/BenchmarkOneScript/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\225\320\264\320\270\320\275\320\270\321\206\320\260\320\230\320\267\320\274\320\265\321\200\320\265\320\275\320\270\321\217\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\260.os" "b/src/BenchmarkOneScript/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\225\320\264\320\270\320\275\320\270\321\206\320\260\320\230\320\267\320\274\320\265\321\200\320\265\320\275\320\270\321\217\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\260.os"
index 6d580c1..41b6336 100644
--- "a/src/BenchmarkOneScript/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\225\320\264\320\270\320\275\320\270\321\206\320\260\320\230\320\267\320\274\320\265\321\200\320\265\320\275\320\270\321\217\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\260.os"
+++ "b/src/BenchmarkOneScript/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\225\320\264\320\270\320\275\320\270\321\206\320\260\320\230\320\267\320\274\320\265\321\200\320\265\320\275\320\270\321\217\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\260.os"
@@ -10,7 +10,7 @@
Обозначение = пОбозначение;
Наименование = пНаименование;
- Базовая = ?(пБазовая = Неопределено, ЭтотОбъект, пБазовая);
+ Базовая = пБазовая;
ОтношениеКБазовой = пОтношениеКБазовой;
ВыводитьВЛегенде = пВыводитьВЛегенде;
diff --git "a/src/BenchmarkOneScript/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\227\320\260\320\277\321\203\321\201\320\272\320\260\321\202\320\265\320\273\321\214\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262.os" "b/src/BenchmarkOneScript/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\227\320\260\320\277\321\203\321\201\320\272\320\260\321\202\320\265\320\273\321\214\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262.os"
index c770a46..2dc99c1 100644
--- "a/src/BenchmarkOneScript/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\227\320\260\320\277\321\203\321\201\320\272\320\260\321\202\320\265\320\273\321\214\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262.os"
+++ "b/src/BenchmarkOneScript/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\227\320\260\320\277\321\203\321\201\320\272\320\260\321\202\320\265\320\273\321\214\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262.os"
@@ -48,30 +48,7 @@
// Запускает бенчмарки
//
// Возвращаемое значение:
-// Структура:
-// * ИмяКласса - Строка - Имя класса
-// * ДескрипторыБенчмарков - КоллекцияДескрипторовБенчмарков
-// * Конфигурация - КонфигурацияБенчмарков
-// * Отчет - ОтчетБенчмарков
-// * СредаОкружения - СредаОкруженияБенчмарков
-// * Расшифровка - ТаблицаЗначений:
-// ** ДескрипторБенчмарка - ДескрипторБенчмарка
-// ** Параметры - Массив из ПараметрБенчмарка
-// ** Эталон - СтрокаТаблицыЗначений, Неопределено
-// ** ЭтоЭталон - Булево
-// ** Статистика - СтатистикаБенчмарка
-// ** ИсполняющаяСреда - Структура:
-// *** Версия - Строка
-// *** Алиас - Строка
-// *** Наименование - Строка
-// ** Замеры - ТаблицаЗначений:
-// *** Этап - см. ЭтапыБенчмарка
-// *** НомерИтерации - Число
-// *** КоличествоОпераций - Число
-// *** Наносекунд - Число - Наносекунд за итерацию
-// *** НаносекундЗаОперацию - Число - Наносекунд за операцию
-// *** ВыделяемаяПамять - Число - Байт выделяемой памяти за итерацию
-// *** ВыделяемаяПамятьЗаОперацию - Число - Байт выделяемой памяти за операцию
+// РезультатыБенчмарков
Функция Запустить() Экспорт
ЭтоВоркер = Бенчмаркинг.ЭтоВоркер();
@@ -83,13 +60,16 @@
КонецЕсли;
Если ЗапускатьВТекущейСреде Тогда
- Результат = ЗапуститьВсеБенчмарки();
+ Результат = ЗапуститьБенчмаркиВТекущейСреде();
Иначе
- Результат = ЗапуститьБенчмаркиВКаждойВерсии();
+ Результат = ЗапуститьБенчмаркиВоВсехСредах();
КонецЕсли;
Если Не ЭтоВоркер Тогда
ВывестиРезультатыБенчмарков(Результат);
+ Иначе
+ Результат.Конфигурация = Новый КонфигурацияБенчмарков();
+ Результат.ДескрипторыБенчмарков = Новый КоллекцияДескрипторовБенчмарков();
КонецЕсли;
ЭкспортироватьРезультаты(Результат);
@@ -106,7 +86,7 @@
#Область ЗапускВДругихСредах
-Функция ЗапуститьБенчмаркиВКаждойВерсии()
+Функция ЗапуститьБенчмаркиВоВсехСредах()
ПередаваемаяКонфигурация = _Конфигурация
.Скопировать()
@@ -114,24 +94,31 @@
.УдалитьЭкспортеры()
.ДобавитьЭкспортер(ЭкспортерыРезультатовБенчмарков.Json);
- МенеджерРасшифровкиРезультатов = Новый МенеджерРасшифровкиРезультатовБенчмарков();
- Результат = НовыйРезультат(МенеджерРасшифровкиРезультатов);
- Результат.СредаОкружения.ВерсияИсполняющейСреды = "";
+ РезультатыБенчмарков = НовыеРезультатыБенчмарков();
+ РезультатыБенчмарков.СредаОкружения.ВерсияИсполняющейСреды = "";
Для Каждого ИсполняющаяСреда Из _Конфигурация.ВерсииИсполняющейСреды() Цикл
- ЗапуститьВИсполняющейСреде(ИсполняющаяСреда, ПередаваемаяКонфигурация, Результат.Расшифровка);
+
+ ЗапускиБенчмарков = ЗапуститьВИсполняющейСреде(ИсполняющаяСреда, ПередаваемаяКонфигурация);
+
+ Для Каждого РезультатЗапускаБенчмарка Из ЗапускиБенчмарков Цикл
+ РезультатыБенчмарков.Запуски.Добавить(РезультатЗапускаБенчмарка);
+ КонецЦикла;
+
КонецЦикла;
- МенеджерРасшифровкиРезультатов.ОпределитьЭталоны(_Конфигурация);
+ РезультатыБенчмарков.ОпределитьЭталоны();
- Построитель = Новый ПостроительОтчетаБенчмарков(_ДескрипторыБенчмарков, _Конфигурация, Результат.Расшифровка);
- Результат.Отчет = Построитель.Сформировать();
+ Построитель = Новый ПостроительОтчетаБенчмарков(
+ _ДескрипторыБенчмарков, _Конфигурация, РезультатыБенчмарков.Запуски);
- Возврат Результат;
+ РезультатыБенчмарков.Отчет = Построитель.Сформировать();
+
+ Возврат РезультатыБенчмарков;
КонецФункции
-Процедура ЗапуститьВИсполняющейСреде(ИсполняющаяСреда, Конфигурация, РасшифровкаРезультатов)
+Функция ЗапуститьВИсполняющейСреде(ИсполняющаяСреда, Конфигурация)
ТаймаутМинут = 10;
МиллисекундВМинуте = 60000;
@@ -161,20 +148,24 @@
ВызватьИсключение СтрШаблон("Завершение процесса с ошибкой в исполняющей среде версии <%1>", ИсполняющаяСреда.Версия);
КонецЕсли;
- ПрочитатьРасшифровкуЗамеровИзJSON(РасшифровкаРезультатов, КаталогАртефактов, ИсполняющаяСреда);
+ ЗапускиБенчмарков = ПрочитатьЗапускиБенчмарковИзJSON(КаталогАртефактов, ИсполняющаяСреда);
+
+ УдалитьФайлы(КаталогАртефактов);
_Лог.Отладка("Завершение процесса в исполняющей среде версии <%1>", ИсполняющаяСреда.Версия);
-КонецПроцедуры
+ Возврат ЗапускиБенчмарков;
+
+КонецФункции
Функция ПодготовитьПроцесс(Конфигурация, Версия)
Тип = _ДескрипторыБенчмарков.ПолучитьПервый().ТипОбъекта();
ИмяФайлаИсполняющейСреды = ИмяФайлаИсполняющейСреды(Версия);
ИмяФайлаТочкиВхода = ТочкаВходаКонсольногоПриложения();
- ИмяФайлаКонфигурации = ПолучитьИмяФайлаКонфигурацииДляПроцесса(Конфигурация);
+ ИмяФайлаКонфигурации = ЗаписатьНастройкиВФайл(_ДескрипторыБенчмарков, Конфигурация);
ИмяФайлаТипа = Новый РасширениеТипа(Тип).Источник;
- КаталогБиблиотек = ИсполняющаяСредаБенчмарков.КаталогБиблиотек();
+ КаталогБиблиотек = ИнформацияСредыБенчмарков.КаталогБиблиотек();
ПеременныеСреды = ПеременныеСреды();
ПеременныеСреды.Вставить("OSCRIPT_CONFIG", СтрШаблон("lib.system=%1; systemlanguage=ru", КаталогБиблиотек));
@@ -193,8 +184,8 @@
// --worker
СтрокаКоманды.Добавить("--worker");
- // --config
- СтрокаКоманды.Добавить("--config");
+ // --settings
+ СтрокаКоманды.Добавить("--settings");
СтрокаКоманды.Добавить(ОбернутьВКавычки(ИмяФайлаКонфигурации));
// FILE
@@ -238,12 +229,12 @@
КонецФункции
-Функция ПолучитьИмяФайлаКонфигурацииДляПроцесса(Конфигурация)
+Функция ЗаписатьНастройкиВФайл(ДескрипторыБенчмарков, Конфигурация)
ПутьКФайлу = _МенеджерВременныхФайлов.СоздатьФайл("json");
- Сериализатор = Новый СериализаторКонфигурацииБенчмарков();
- Сериализатор.СериализоватьВJSON(Конфигурация, ПутьКФайлу);
+ Сериализатор = Новый СериализаторНастроекБенчмарков();
+ Сериализатор.ЗаписатьВJson(ДескрипторыБенчмарков, Конфигурация, ПутьКФайлу);
Возврат ПутьКФайлу;
@@ -259,7 +250,7 @@
Возврат Версия;
КонецЕсли;
- КаталогУстановки = ИсполняющаяСредаБенчмарков.КаталогУстановки();
+ КаталогУстановки = ИнформацияСредыБенчмарков.КаталогУстановки();
Если КаталогУстановки = Неопределено Тогда
ВызватьИсключение "Не найден каталог с установленными версиями OneScript.
|Убедитесь, что OVM (OneScript Version Manager) установлен и переменная OVM_INSTALL_PATH настроена корректно.";
@@ -267,7 +258,7 @@
_Лог.Отладка(СтрШаблон("Каталог с установленными версиями OneScript: %1", КаталогУстановки));
- ИмяФайла = ИсполняющаяСредаБенчмарков.НайтиИсполняемыйФайл(Версия);
+ ИмяФайла = ИнформацияСредыБенчмарков.НайтиИсполняемыйФайл(Версия);
Если ИмяФайла = Неопределено Тогда
ВызватьИсключение СтрШаблон("Не найден OneScript версии %1 в каталоге OVM (OneScript Version Manager)", Версия);
@@ -277,28 +268,38 @@
КонецФункции
-Процедура ПрочитатьРасшифровкуЗамеровИзJSON(РасшифровкаРезультатов, Каталог, ИсполняющаяСреда)
+Функция ПрочитатьЗапускиБенчмарковИзJSON(Каталог, ИсполняющаяСреда)
+ ЗапускиБенчмарков = Новый Массив();
Сериализатор = Новый СериализаторРезультатовБенчмарков();
Файлы = НайтиФайлы(Каталог, "*-report.json");
Для Каждого Файл Из Файлы Цикл
- Данные = Сериализатор.ДесериализоватьИзJSON(Файл.ПолноеИмя, _Конфигурация);
- Для Каждого СтрокаРезультата Из Данные.Расшифровка Цикл
- НоваяСтрокаТаблицы = РасшифровкаРезультатов.Добавить();
- ЗаполнитьЗначенияСвойств(НоваяСтрокаТаблицы, СтрокаРезультата);
- НоваяСтрокаТаблицы.ИсполняющаяСреда.Алиас = ИсполняющаяСреда.Версия; // Заменяем current
- НоваяСтрокаТаблицы.ИсполняющаяСреда.Наименование = ИсполняющаяСреда.Наименование;
+
+ Данные = Сериализатор.ПрочитатьИзJson(Файл.ПолноеИмя);
+
+ Для Каждого РезультатЗапускаБенчмарка Из Данные.Запуски Цикл
+
+ НовыйРезультатЗапускаБенчмарка = Новый РезультатЗапускаБенчмаркаДто();
+ ЗаполнитьЗначенияСвойств(НовыйРезультатЗапускаБенчмарка, РезультатЗапускаБенчмарка);
+ НовыйРезультатЗапускаБенчмарка.ИсполняющаяСреда.Алиас = ИсполняющаяСреда.Версия; // Заменяем current
+ НовыйРезультатЗапускаБенчмарка.ИсполняющаяСреда.Наименование = ИсполняющаяСреда.Наименование;
+
+ ЗапускиБенчмарков.Добавить(НовыйРезультатЗапускаБенчмарка);
+
КонецЦикла;
+
КонецЦикла;
-КонецПроцедуры
+ Возврат ЗапускиБенчмарков;
+
+КонецФункции
#КонецОбласти
#Область ЗапускВТекущейСреде
-Функция ЗапуститьВсеБенчмарки()
+Функция ЗапуститьБенчмаркиВТекущейСреде()
ПрогретьИнструментыЗамера();
@@ -308,8 +309,7 @@
КонецЕсли;
// Инициализация результатов
- МенеджерРасшифровкиРезультатов = Новый МенеджерРасшифровкиРезультатовБенчмарков();
- Результат = НовыйРезультат(МенеджерРасшифровкиРезультатов);
+ РезультатыБенчмарков = НовыеРезультатыБенчмарков();
// Событие ПередВсеми
КонтекстСобытия = Новый Структура();
@@ -337,26 +337,36 @@
КонецЕсли;
Для Каждого Параметры Из КомбинацииПараметров Цикл
- ЗапуститьБенчмарк(ДескрипторБенчмарка, Параметры, МенеджерРасшифровкиРезультатов);
+ РезультатЗапускаБенчмарка = ЗапуститьБенчмарк(ДескрипторБенчмарка, Параметры);
+ РезультатыБенчмарков.Запуски.Добавить(РезультатЗапускаБенчмарка);
КонецЦикла;
КонецЦикла;
// Подготовка результатов
- МенеджерРасшифровкиРезультатов.ОпределитьЭталоны(_Конфигурация);
- МенеджерРасшифровкиРезультатов.ОбновитьСтатистику();
+ РезультатыБенчмарков.ОпределитьЭталоны();
+ РезультатыБенчмарков.ОбновитьСтатистику();
- Построитель = Новый ПостроительОтчетаБенчмарков(_ДескрипторыБенчмарков, _Конфигурация, Результат.Расшифровка);
- Результат.Отчет = Построитель.Сформировать();
+ Построитель = Новый ПостроительОтчетаБенчмарков(
+ _ДескрипторыБенчмарков, _Конфигурация, РезультатыБенчмарков.Запуски);
+
+ РезультатыБенчмарков.Отчет = Построитель.Сформировать();
// Событие ПослеВсех
- ВызватьОбработчикСобытия(СобытияБенчмарков.ПослеВсех, Результат);
+ КонтекстСобытия = Новый Структура();
+ КонтекстСобытия.Вставить("Конфигурация", РезультатыБенчмарков.Конфигурация);
+ КонтекстСобытия.Вставить("ДескрипторыБенчмарков", РезультатыБенчмарков.ДескрипторыБенчмарков);
+ КонтекстСобытия.Вставить("Запуски", РезультатыБенчмарков.Запуски);
+ КонтекстСобытия.Вставить("Отчет", РезультатыБенчмарков.Отчет);
+ КонтекстСобытия.Вставить("СредаОкружения", РезультатыБенчмарков.СредаОкружения);
- Возврат Результат;
+ ВызватьОбработчикСобытия(СобытияБенчмарков.ПослеВсех, КонтекстСобытия);
+
+ Возврат РезультатыБенчмарков;
КонецФункции
-Процедура ЗапуститьБенчмарк(ДескрипторБенчмарка, Параметры, МенеджерРасшифровкиРезультатов)
+Функция ЗапуститьБенчмарк(ДескрипторБенчмарка, Параметры)
ВывестиЗаголовокБенчмарка(ДескрипторБенчмарка);
ВывестиПараметры(Параметры);
@@ -365,14 +375,14 @@
УстановитьПараметрыОбъекта(Параметры);
// Инициализация результата
- Результат = МенеджерРасшифровкиРезультатов.Добавить();
- Результат.ДескрипторБенчмарка = ДескрипторБенчмарка;
- Результат.Параметры = Параметры;
- Результат.Статистика = Новый СтатистикаБенчмарка();
+ РезультатЗапускаБенчмарка = Новый РезультатЗапускаБенчмаркаДто();
+ РезультатЗапускаБенчмарка.ДескрипторБенчмарка = ДескрипторБенчмарка;
+ РезультатЗапускаБенчмарка.Параметры = Параметры;
+ РезультатЗапускаБенчмарка.Статистика = Новый СтатистикаБенчмарка();
Если Бенчмаркинг.ЭтоВоркер() Тогда
- Результат.ИсполняющаяСреда.Версия = Новый СистемнаяИнформация().Версия;
- Результат.ИсполняющаяСреда.Алиас = "current";
+ РезультатЗапускаБенчмарка.ИсполняющаяСреда.Версия = Новый СистемнаяИнформация().Версия;
+ РезультатЗапускаБенчмарка.ИсполняющаяСреда.Алиас = "current";
КонецЕсли;
// Событие ПередКаждым
@@ -392,26 +402,28 @@
ЗапуститьЭтапПрогрева(Делегат, КоличествоВызововЗаИтерацию);
КонецЕсли;
- ЗапуститьЭтапИзмерения(Делегат, КоличествоВызововЗаИтерацию, Результат.Замеры);
+ ЗапуститьЭтапИзмерения(Делегат, КоличествоВызововЗаИтерацию, РезультатЗапускаБенчмарка.Замеры);
Если _Конфигурация.ТребуетсяМониторингПамяти() Тогда
- ЗапуститьМониторингПамяти(Делегат, КоличествоВызововЗаИтерацию, Результат.Замеры);
+ ЗапуститьМониторингПамяти(Делегат, КоличествоВызововЗаИтерацию, РезультатЗапускаБенчмарка.Замеры);
КонецЕсли;
// Сбор статистики
- Результат.Статистика.Прочитать(Результат.Замеры);
- ВывестиСтатистику(Результат.Статистика);
+ РезультатЗапускаБенчмарка.Статистика.Прочитать(РезультатЗапускаБенчмарка.Замеры);
+ ВывестиСтатистику(РезультатЗапускаБенчмарка.Статистика);
// Событие ПослеКаждого
КонтекстСобытия = Новый Структура();
КонтекстСобытия.Вставить("ДескрипторБенчмарка", ДескрипторБенчмарка);
КонтекстСобытия.Вставить("Параметры", Параметры);
- КонтекстСобытия.Вставить("Замеры", Результат.Замеры);
- КонтекстСобытия.Вставить("Статистика", Результат.Статистика);
+ КонтекстСобытия.Вставить("Замеры", РезультатЗапускаБенчмарка.Замеры);
+ КонтекстСобытия.Вставить("Статистика", РезультатЗапускаБенчмарка.Статистика);
ВызватьОбработчикСобытия(СобытияБенчмарков.ПослеКаждого, КонтекстСобытия);
+
+ Возврат РезультатЗапускаБенчмарка;
-КонецПроцедуры
+КонецФункции
Функция РассчитатьКоличествоВызововЗаИтерацию(Делегат)
@@ -484,7 +496,7 @@
Для НомерИтерации = 1 По _Конфигурация.КоличествоИтераций() Цикл
РезультатИтерации = ВыполнитьИтерацию(Делегат, ЭтапыБенчмарка.Измерение, НомерИтерации, КоличествоВызововЗаИтерацию);
- ЗаполнитьЗначенияСвойств(Замеры.Добавить(), РезультатИтерации);
+ Замеры.Добавить(РезультатИтерации);
КонецЦикла;
@@ -495,7 +507,7 @@
Для НомерИтерации = 1 По _Конфигурация.КоличествоИтераций() Цикл
РезультатИтерации = ВыполнитьИтерацию(Делегат, ЭтапыБенчмарка.Память, НомерИтерации, КоличествоВызововЗаИтерацию);
- ЗаполнитьЗначенияСвойств(Замеры.Добавить(), РезультатИтерации);
+ Замеры.Добавить(РезультатИтерации);
КонецЦикла;
@@ -531,7 +543,7 @@
Наносекунд = ЗамеритьВремя(Делегат, КоличествоВызовов);
КонецЕсли;
- РезультатИтерации = НовыйРезультатИтерации();
+ РезультатИтерации = Новый РезультатИтерацииБенчмаркаДто();
РезультатИтерации.Этап = Этап;
РезультатИтерации.НомерИтерации = НомерИтерации;
РезультатИтерации.КоличествоОпераций = КоличествоВызовов;
@@ -692,10 +704,10 @@
КонецЕсли;
Если КоличествоПараметровМетода = 1 Тогда
- Параметр = Новый ПараметрБенчмарка(ИменаПараметров[0], Параметры, Истина);
- Результат = Новый Массив();
- Результат.Добавить(Параметр);
- Возврат Результат;
+ ПараметрБенчмарка = Новый ПараметрБенчмарка(ИменаПараметров[0], Параметры, Истина);
+ ПараметрыМетодаБенчмарка = Новый ПараметрыМетодаБенчмарка();
+ ПараметрыМетодаБенчмарка.Добавить(ПараметрБенчмарка);
+ Возврат ПараметрыМетодаБенчмарка;
КонецЕсли;
ТипКоллекции = ТипЗнч(Параметры);
@@ -718,7 +730,7 @@
Функция ПреобразоватьМассивВПараметрыМетодаБенчмарка(ДескрипторБенчмарка, Параметры)
- Результат = Новый Массив();
+ ПараметрыМетодаБенчмарка = Новый ПараметрыМетодаБенчмарка();
ИменаПараметров = ДескрипторБенчмарка.ИменаПараметров();
КоличествоТребуемыхПараметров = ИменаПараметров.Количество();
@@ -732,17 +744,17 @@
КонецЕсли;
Для ИндексПараметра = 0 По Параметры.ВГраница() Цикл
- Параметр = Новый ПараметрБенчмарка(ИменаПараметров[ИндексПараметра], Параметры[ИндексПараметра], Истина);
- Результат.Добавить(Параметр);
+ ПараметрБенчмарка = Новый ПараметрБенчмарка(ИменаПараметров[ИндексПараметра], Параметры[ИндексПараметра], Истина);
+ ПараметрыМетодаБенчмарка.Добавить(ПараметрБенчмарка);
КонецЦикла;
- Возврат Результат;
+ Возврат ПараметрыМетодаБенчмарка;
КонецФункции
Функция ПреобразоватьСтруктуруВПараметрыМетодаБенчмарка(ДескрипторБенчмарка, Параметры)
- Результат = Новый Массив();
+ ПараметрыМетодаБенчмарка = Новый ПараметрыМетодаБенчмарка();
ТипКоллекции = ТипЗнч(Параметры);
Для Каждого ИмяПараметра Из ДескрипторБенчмарка.ИменаПараметров() Цикл
@@ -762,18 +774,18 @@
);
КонецЕсли;
- Параметр = Новый ПараметрБенчмарка(ИмяПараметра, Параметры[ИмяПараметра], Истина);
- Результат.Добавить(Параметр);
+ ПараметрБенчмарка = Новый ПараметрБенчмарка(ИмяПараметра, Параметры[ИмяПараметра], Истина);
+ ПараметрыМетодаБенчмарка.Добавить(ПараметрБенчмарка);
КонецЦикла;
- Возврат Результат;
+ Возврат ПараметрыМетодаБенчмарка;
КонецФункции
Функция ПреобразоватьСтрокуТаблицыЗначенийВПараметрыМетодаБенчмарка(ДескрипторБенчмарка, Параметры)
- Результат = Новый Массив();
+ ПараметрыМетодаБенчмарка = Новый ПараметрыМетодаБенчмарка();
Колонки = Параметры.Владелец().Колонки;
Для Каждого ИмяПараметра Из ДескрипторБенчмарка.ИменаПараметров() Цикл
@@ -786,12 +798,12 @@
);
КонецЕсли;
- Параметр = Новый ПараметрБенчмарка(ИмяПараметра, Параметры[ИмяПараметра], Истина);
- Результат.Добавить(Параметр);
+ ПараметрБенчмарка = Новый ПараметрБенчмарка(ИмяПараметра, Параметры[ИмяПараметра], Истина);
+ ПараметрыМетодаБенчмарка.Добавить(ПараметрБенчмарка);
КонецЦикла;
- Возврат Результат;
+ Возврат ПараметрыМетодаБенчмарка;
КонецФункции
@@ -875,7 +887,8 @@
Процедура ЭкспортироватьРезультаты(Результаты)
КаталогАртефактов = _Конфигурация.КаталогАртефактов();
- МаскаФайлов = СтрШаблон("%1-*", Результаты.ИмяКласса);
+ ИмяФайла = СтрШаблон("%1-report", Строка(ТипЗнч(_ОбъектБенчмарков)));
+ МаскаФайлов = СтрШаблон("%1.*", ИмяФайла);
Экспортеры = _Конфигурация.Экспортеры();
Если Не ЗначениеЗаполнено(КаталогАртефактов) Или Экспортеры.Количество() = 0 Тогда
@@ -886,10 +899,16 @@
ФС.УдалитьФайлы(КаталогАртефактов, МаскаФайлов);
Для Каждого Экспортер Из _Конфигурация.Экспортеры() Цикл
- Экспортер.Записать(Результаты);
+
+ ИмяФайлаСРасширением = СтрШаблон("%1.%2", ИмяФайла, Экспортер.Расширение());
+ ПолноеИмяФайла = ОбъединитьПути(КаталогАртефактов, ИмяФайлаСРасширением);
+
+ Экспортер.Записать(Результаты, ПолноеИмяФайла);
+
КонецЦикла;
Если Не Бенчмаркинг.ЭтоВоркер() Тогда
+
Артефакты = НайтиФайлы(КаталогАртефактов, МаскаФайлов);
Если Артефакты.Количество() Тогда
ВывестиСтроку(" ");
@@ -899,6 +918,7 @@
Для Каждого Артефакт Из Артефакты Цикл
ВывестиСтроку(Артефакт.ПолноеИмя, "ТемноЖелтый");
КонецЦикла;
+
КонецЕсли;
КонецПроцедуры
@@ -996,36 +1016,17 @@
КонецПроцедуры
Функция ОбернутьВКавычки(Строка)
- Кавычка = ?(ИсполняющаяСредаБенчмарков.ЭтоWindows(), """", "'");
+ Кавычка = ?(ИнформацияСредыБенчмарков.ЭтоWindows(), """", "'");
Возврат СтрШаблон("%2%1%2", Строка, Кавычка);
КонецФункции
-Функция НовыйРезультатИтерации()
-
- Результат = Новый Структура();
- Результат.Вставить("Этап", "");
- Результат.Вставить("НомерИтерации", 0);
- Результат.Вставить("КоличествоОпераций", 0);
- Результат.Вставить("Наносекунд", 0);
- Результат.Вставить("НаносекундЗаОперацию",0);
- Результат.Вставить("ВыделяемаяПамять", 0);
- Результат.Вставить("ВыделяемаяПамятьЗаОперацию", 0);
+Функция НовыеРезультатыБенчмарков() Экспорт
- Возврат Результат;
-
-КонецФункции
-
-Функция НовыйРезультат(МенеджерРасшифровкиРезультатов) Экспорт
-
- Результат = Новый Структура();
- Результат.Вставить("ИмяКласса", Строка(ТипЗнч(_ОбъектБенчмарков)));
- Результат.Вставить("ДескрипторыБенчмарков", _ДескрипторыБенчмарков);
- Результат.Вставить("Конфигурация", _Конфигурация);
- Результат.Вставить("Расшифровка", МенеджерРасшифровкиРезультатов.ВТаблицу());
- Результат.Вставить("Отчет", Неопределено);
- Результат.Вставить("СредаОкружения", Новый СредаОкруженияБенчмарков());
+ Результаты = Новый РезультатыБенчмарков();
+ Результаты.ДескрипторыБенчмарков = _ДескрипторыБенчмарков;
+ Результаты.Конфигурация = _Конфигурация;
- Возврат Результат;
+ Возврат Результаты;
КонецФункции
diff --git "a/src/BenchmarkOneScript/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\227\320\260\320\277\321\203\321\201\320\272\320\260\321\202\320\265\320\273\321\214\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262\320\230\320\267\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260.os" "b/src/BenchmarkOneScript/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\227\320\260\320\277\321\203\321\201\320\272\320\260\321\202\320\265\320\273\321\214\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262\320\230\320\267\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260.os"
index 4eb6454..e16024e 100644
--- "a/src/BenchmarkOneScript/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\227\320\260\320\277\321\203\321\201\320\272\320\260\321\202\320\265\320\273\321\214\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262\320\230\320\267\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260.os"
+++ "b/src/BenchmarkOneScript/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\227\320\260\320\277\321\203\321\201\320\272\320\260\321\202\320\265\320\273\321\214\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262\320\230\320\267\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260.os"
@@ -26,7 +26,6 @@
// Возвращаемое значение:
// ТаблицаЗначений:
// * Результат - см. Бенчмаркинг.Запустить, Неопределено
-// * ИмяКласса - Строка - Имя класса
// * ИмяФайла - Строка - Имя файла
// * ПолноеИмяФайла - Строка - Путь к файлу сценария
// * Успешно - Булево - Индикатор корректного выполнения
@@ -50,7 +49,6 @@
КонецЕсли;
СтрокаРезультата = Результат.Добавить();
- СтрокаРезультата.ИмяКласса = Строка(Тип);
СтрокаРезультата.ПолноеИмяФайла = Файл.ПолноеИмя;
СтрокаРезультата.ИмяФайла = Файл.ИмяБезРасширения;
СтрокаРезультата.Результат = Неопределено;
@@ -65,8 +63,8 @@
СтрокаРезультата.Результат = Бенчмаркинг.Запустить(Тип, Конфигурация);
Исключение
СтрокаРезультата.Успешно = Ложь;
- _Лог.Ошибка("Возникла ошибка при запуске бенчмарков класса <%1>: %2",
- СтрокаРезультата.ИмяКласса,
+ _Лог.Ошибка("Возникла ошибка при запуске бенчмарков <%1>: %2",
+ СтрокаРезультата.ИмяФайла,
ОписаниеОшибки());
КонецПопытки;
@@ -85,7 +83,6 @@
ТипСтрока = Новый ОписаниеТипов("Строка");
Таблица = Новый ТаблицаЗначений();
- Таблица.Колонки.Добавить("ИмяКласса", ТипСтрока);
Таблица.Колонки.Добавить("ПолноеИмяФайла", ТипСтрока);
Таблица.Колонки.Добавить("ИмяФайла", ТипСтрока);
Таблица.Колонки.Добавить("Результат");
diff --git "a/src/BenchmarkOneScript/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\273\320\273\320\265\320\272\321\206\320\270\321\217\320\224\320\265\321\201\320\272\321\200\320\270\320\277\321\202\320\276\321\200\320\276\320\262\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262.os" "b/src/BenchmarkOneScript/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\273\320\273\320\265\320\272\321\206\320\270\321\217\320\224\320\265\321\201\320\272\321\200\320\270\320\277\321\202\320\276\321\200\320\276\320\262\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262.os"
index 442efb4..5c370c3 100644
--- "a/src/BenchmarkOneScript/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\273\320\273\320\265\320\272\321\206\320\270\321\217\320\224\320\265\321\201\320\272\321\200\320\270\320\277\321\202\320\276\321\200\320\276\320\262\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262.os"
+++ "b/src/BenchmarkOneScript/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\273\320\273\320\265\320\272\321\206\320\270\321\217\320\224\320\265\321\201\320\272\321\200\320\270\320\277\321\202\320\276\321\200\320\276\320\262\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262.os"
@@ -1,17 +1,19 @@
#Использовать fluent
+&Несериализуемое
Перем _ДескрипторыБенчмарков; // Массив из ДескрипторБенчмарка
// Коллекция дескрипторов бенчмарков
//
// Параметры:
-// ИсточникБенчмарков - Тип, Произвольный - Тип или экземпляр класса бенчмарков
+// ИсточникБенчмарков - Произвольный - Тип или экземпляр класса бенчмарков,
+// откуда будут прочитаны дескрипторы
Процедура ПриСозданииОбъекта(ИсточникБенчмарков = Неопределено) Экспорт
_ДескрипторыБенчмарков = Новый Массив();
Если Не ИсточникБенчмарков = Неопределено Тогда
- ИзвлекательДескрипторовБенчмарков.Извлечь(ИсточникБенчмарков, ЭтотОбъект);
+ Прочитать(ИсточникБенчмарков);
КонецЕсли;
КонецПроцедуры
@@ -47,13 +49,18 @@
Возврат _ДескрипторыБенчмарков.Количество();
КонецФункции
+// Очищает коллекцию
+Процедура Очистить() Экспорт
+ _ДескрипторыБенчмарков.Очистить();
+КонецПроцедуры
+
// Дескриптор бенчмарка по имени метода
//
// Параметры:
// Имя - Строка - Имя метода бенчмарка
//
// Возвращаемое значение:
-// ДескрипторБенчмарка
+// ДескрипторБенчмарка, Неопределено
Функция НайтиПоИмени(Имя) Экспорт
Возврат ПроцессорыКоллекций
@@ -63,6 +70,25 @@
КонецФункции
+// Дескриптор бенчмарка по имени метода
+//
+// Параметры:
+// Тип - Тип - Класс бенчмарков
+// Имя - Строка - Имя метода бенчмарка
+//
+// Возвращаемое значение:
+// ДескрипторБенчмарка, Неопределено
+Функция НайтиПоТипуИИмени(Тип, Имя) Экспорт
+
+ Контекст = Новый Структура("Тип, Имя", Тип, Имя);
+
+ Возврат ПроцессорыКоллекций
+ .ИзКоллекции(_ДескрипторыБенчмарков)
+ .Фильтровать("Элемент -> Элемент.Метод() = Имя И Элемент.ТипОбъекта() = Тип", Контекст)
+ .ПолучитьПервый();
+
+КонецФункции
+
// Первый в наборе дескриптор бенчмарка
//
// Возвращаемое значение:
@@ -80,7 +106,12 @@
// Возвращаемое значение:
// КоллекцияДескрипторовБенчмарков
Функция ПолучитьЭталонные() Экспорт
- Возврат Скопировать().Фильтровать("Бенчмарк -> Бенчмарк.ЭтоЭталон() = Истина");
+
+ Коллекция = Скопировать();
+ Коллекция.Фильтровать("Бенчмарк -> Бенчмарк.ЭтоЭталон() = Истина");
+
+ Возврат Коллекция;
+
КонецФункции
// Создает копию коллекции дескрипторов бенчмарков
@@ -103,20 +134,26 @@
//
// Параметры:
// ФункцияФильтрации - Строка - Лямбда выражение функция с одним параметром в который будет передан элемент,
-// и которая возвращает Булево, Истина если элемент проходит фильтр, Ложь в противном случае
-//
-// Возвращаемое значение:
-// ЭтотОбъект
-Функция Фильтровать(ФункцияФильтрации) Экспорт
+// и которая возвращает Булево, Истина если элемент проходит фильтр,
+// Ложь в противном случае
+// ДополнительныеПараметры - Структура - Контекст добавляемый в лямбда выражение
+Процедура Фильтровать(ФункцияФильтрации, ДополнительныеПараметры = Неопределено) Экспорт
_ДескрипторыБенчмарков = ПроцессорыКоллекций
.ИзКоллекции(_ДескрипторыБенчмарков)
- .Фильтровать(ФункцияФильтрации)
+ .Фильтровать(ФункцияФильтрации, ДополнительныеПараметры)
.ВМассив();
- Возврат ЭтотОбъект;
+КонецПроцедуры
-КонецФункции
+// Читает дескрипторы бенчмарков из класса
+//
+// Параметры:
+// ИсточникБенчмарков - Произвольный - Тип или экземпляр класса бенчмарков
+Процедура Прочитать(ИсточникБенчмарков) Экспорт
+ Очистить();
+ ИзвлекательДескрипторовБенчмарков.Извлечь(ИсточникБенчмарков, ЭтотОбъект);
+КонецПроцедуры
// Массив дескрипторов бенчмарков
//
@@ -124,4 +161,29 @@
// Массив из ДескрипторБенчмарка
Функция ВМассив() Экспорт
Возврат Новый Массив(Новый ФиксированныйМассив(_ДескрипторыБенчмарков));
-КонецФункции
\ No newline at end of file
+КонецФункции
+
+#Область Сериализация
+
+&ПередСериализацией
+Процедура ПередСериализацией(Сериализатор, Результат, СтандартнаяОбработка) Экспорт
+
+ СтандартнаяОбработка = Ложь;
+
+ Результат = Сериализатор.ПреобразоватьОбъектСериализации(_ДескрипторыБенчмарков);
+
+КонецПроцедуры
+
+&ПослеДесериализации
+Процедура ПослеДесериализации(Десериализатор, ПрочитанныеСвойства) Экспорт
+
+ Если ТипЗнч(ПрочитанныеСвойства) = Тип("Массив") Тогда
+ _ДескрипторыБенчмарков = Десериализатор.ПреобразоватьОбъектДесериализации(
+ ПрочитанныеСвойства,
+ Тип("Массив"),
+ Тип("ДескрипторБенчмарка"));
+ КонецЕсли;
+
+КонецПроцедуры
+
+#КонецОбласти
\ No newline at end of file
diff --git "a/src/BenchmarkOneScript/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\273\320\276\320\275\320\272\320\260\320\236\321\202\321\207\320\265\321\202\320\260\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262.os" "b/src/BenchmarkOneScript/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\273\320\276\320\275\320\272\320\260\320\236\321\202\321\207\320\265\321\202\320\260\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262.os"
index 0646644..9d8df64 100644
--- "a/src/BenchmarkOneScript/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\273\320\276\320\275\320\272\320\260\320\236\321\202\321\207\320\265\321\202\320\260\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262.os"
+++ "b/src/BenchmarkOneScript/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\273\320\276\320\275\320\272\320\260\320\236\321\202\321\207\320\265\321\202\320\260\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262.os"
@@ -38,15 +38,15 @@
// Значение по результатам замеров
//
// Параметры:
-// СтрокаРезультата - СтрокаТаблицыЗначений - см. МенеджерРасшифровкиРезультатовБенчмарков.НоваяТаблицаРасшифровки
+// РезультатЗапускаБенчмарка - РезультатЗапускаБенчмаркаДто
// Колонка - КолонкаОтчетаБенчмарков
//
// Возвращаемое значение:
// Произвольный
-Функция Значение(СтрокаРезультата, Колонка) Экспорт
+Функция Значение(РезультатЗапускаБенчмарка, Колонка) Экспорт
МассивПараметров = Новый Массив();
- МассивПараметров.Добавить(СтрокаРезультата);
+ МассивПараметров.Добавить(РезультатЗапускаБенчмарка);
МассивПараметров.Добавить(Колонка);
Возврат ЗначениеДелегат.Исполнить(МассивПараметров);
diff --git "a/src/BenchmarkOneScript/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\321\217\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262.os" "b/src/BenchmarkOneScript/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\321\217\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262.os"
index bae77c0..d0c9e3c 100644
--- "a/src/BenchmarkOneScript/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\321\217\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262.os"
+++ "b/src/BenchmarkOneScript/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\321\217\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262.os"
@@ -1,71 +1,140 @@
#Использовать asserts
#Использовать delegate
+#Использовать validate
+#Использовать reflector
+#Использовать fluent
+&Сериализуемое("Strategy")
+&Тип("Строка")
+&Геттер("Стратегия")
Перем _Стратегия; // см. СтратегииЗапускаБенчмарка
-Перем _СтратегияПоУмолчанию; // см. СтратегииЗапускаБенчмарка
+
+&Сериализуемое("IterationCount")
+&Тип("Число")
+&Геттер("КоличествоИтераций")
Перем _КоличествоИтераций; // Число
-Перем _КоличествоИтерацийПоУмолчанию; // Число
+
+&Сериализуемое("InvocationCount")
+&Тип("Число")
+&Геттер("КоличествоВызововЗаИтерацию")
Перем _КоличествоВызововЗаИтерацию; // Число
-Перем _КоличествоВызововЗаИтерациюПоУмолчанию; // Число
+
+&Сериализуемое("WarmupCount")
+&Тип("Число")
+&Геттер("КоличествоПрогревочныхИтераций")
Перем _КоличествоПрогревочныхИтераций; // Число
-Перем _КоличествоПрогревочныхИтерацийПоУмолчанию; // Число
+
+&Сериализуемое("MinIterationTime")
+&Тип("Число")
+&Геттер("МинимальноеВремяИтерации")
Перем _МинимальноеВремяИтерации; // Число - мс
-Перем _МинимальноеВремяИтерацииПоУмолчанию; // Число - мс
+
+&Сериализуемое("MinInvocationCount")
+&Тип("Число")
+&Геттер("МинимальноеКоличествоВызововЗаИтерацию")
Перем _МинимальноеКоличествоВызововЗаИтерацию; // Число
-Перем _МинимальноеКоличествоВызововЗаИтерациюПоУмолчанию; // Число
+
+&Сериализуемое("ReportSorting")
+&Тип("Строка")
+&Геттер("СортировкаОтчета")
Перем _СортировкаОтчета; // см. СортировкиОтчетаБенчмарков
-Перем _СортировкаОтчетаПоУмолчанию; // см. СортировкиОтчетаБенчмарков
+
+&Сериализуемое("Memory")
+&Тип("Булево")
+&Геттер("ТребуетсяМониторингПамяти")
Перем _ТребуетсяМониторингПамяти; // Булево
-Перем _ТребуетсяМониторингПамятиПоУмолчанию; // Булево
+
+&Сериализуемое("ArtifactsDirectory")
+&Тип("Строка")
+&Геттер("КаталогАртефактов")
Перем _КаталогАртефактов; // Строка
-Перем _КаталогАртефактовПоУмолчанию; // Строка
+
+&Сериализуемое("Parameters")
+&Тип("Массив")
+&ДляКаждого
+&Тип("ПараметрБенчмарка")
+&Геттер("Параметры")
Перем _Параметры; // Массив из ПараметрБенчмарка
+
+&Сериализуемое("ParameterSources")
+&СериализуемыйКлюч("ИмяПоля", "FieldName")
+&СериализуемыйКлюч("Источник", "Source")
+&Тип("ТаблицаЗначений")
+&Геттер("ИсточникиПараметров")
Перем _ИсточникиПараметров; // ТаблицаЗначений
-Перем _Обработчики; // Соответствие
+
+&Несериализуемое
+&Геттер("ОбработчикиСобытий")
+Перем _Обработчики; // ТаблицаЗначений
+
+&Сериализуемое("Columns")
+&Тип("Массив")
+&Геттер("Колонки")
Перем _Колонки; // Массив из Строка - см. КолонкиОтчетаБенчмарков
-Перем _Экспортеры; // Массив из см. ЭкспортерыРезультатовБенчмарков
+
+&Несериализуемое
+&Геттер("Экспортеры")
+Перем _Экспортеры; // Массив из Произвольный - см. ЭкспортерыРезультатовБенчмарков
+
+&Сериализуемое("RuntimeVersions")
+&СериализуемыйКлюч("Версия", "Version")
+&СериализуемыйКлюч("Наименование", "Name")
+&СериализуемыйКлюч("ЭтоЭталон", "Baseline")
+&Тип("ТаблицаЗначений")
+&Геттер("ВерсииИсполняющейСреды")
Перем _ВерсииИсполняющейСреды; // ТаблицаЗначений
+&Несериализуемое
+Перем _ЗначенияПолейПоУмолчанию; // Соответствие
+
+&Несериализуемое
Перем _МодифицированныеПоля; // Соответствие
-Перем _Рефлектор; // Рефлектор, Неопределено
+
+&Несериализуемое
+Перем _ОписанияПолей; // ТаблицаЗначений, Неопределено
+
+&Несериализуемое
+Перем _Рефлектор; // Рефлектор
#Область Конструктор
// Конфигурация бенчмарков
//
// Параметры:
-// ИсточникБенчмарков - Тип, Произвольный - Тип или экземпляр класса бенчмарков
+// ИсточникБенчмарков - Произвольный - Тип или экземпляр класса бенчмарков
Процедура ПриСозданииОбъекта(ИсточникБенчмарков = Неопределено)
- _СтратегияПоУмолчанию = СтратегииЗапускаБенчмарка.ПропускнаяСпособность;
- _КоличествоИтерацийПоУмолчанию = 15;
- _КоличествоВызововЗаИтерациюПоУмолчанию = 0;
- _КоличествоПрогревочныхИтерацийПоУмолчанию = 6;
- _МинимальноеВремяИтерацииПоУмолчанию = 100;
- _МинимальноеКоличествоВызововЗаИтерациюПоУмолчанию = 4;
- _СортировкаОтчетаПоУмолчанию = СортировкиОтчетаБенчмарков.ПоУмолчанию;
- _КаталогАртефактовПоУмолчанию = ".\BenchmarkArtifacts";
- _ТребуетсяМониторингПамятиПоУмолчанию = Ложь;
+ СтратегияПоУмолчанию = СтратегииЗапускаБенчмарка.ПропускнаяСпособность;
+ КоличествоИтерацийПоУмолчанию = 15;
+ КоличествоВызововЗаИтерациюПоУмолчанию = 0;
+ КоличествоПрогревочныхИтерацийПоУмолчанию = 6;
+ МинимальноеВремяИтерацииПоУмолчанию = 100;
+ МинимальноеКоличествоВызововЗаИтерациюПоУмолчанию = 4;
+ СортировкаОтчетаПоУмолчанию = СортировкиОтчетаБенчмарков.ПоУмолчанию;
+ КаталогАртефактовПоУмолчанию = ".\BenchmarkArtifacts";
+ ТребуетсяМониторингПамятиПоУмолчанию = Ложь;
_Параметры = Новый Массив();
_ИсточникиПараметров = ПустаяТаблицаИсточникиПараметров();
- _Обработчики = Новый Соответствие();
+ _Обработчики = ПустаяТаблицаОбработчикиСобытий();
_Колонки = Новый Массив();
_Экспортеры = Новый Массив();
- _МодифицированныеПоля = Новый Соответствие();
_ВерсииИсполняющейСреды = ПустаяТаблицаВерсииИсполняющейСреды();
- _ТребуетсяМониторингПамяти = _ТребуетсяМониторингПамятиПоУмолчанию;
+ _ТребуетсяМониторингПамяти = ТребуетсяМониторингПамятиПоУмолчанию;
+ _МодифицированныеПоля = Новый Соответствие();
+ _Рефлектор = Новый Рефлектор();
- УстановитьСтратегию(_СтратегияПоУмолчанию);
- УстановитьКоличествоИтераций(_КоличествоИтерацийПоУмолчанию);
- УстановитьКоличествоВызововЗаИтерацию(_КоличествоВызововЗаИтерациюПоУмолчанию);
- УстановитьКоличествоПрогревочныхИтераций(_КоличествоПрогревочныхИтерацийПоУмолчанию);
- УстановитьМинимальноеВремяИтерации(_МинимальноеВремяИтерацииПоУмолчанию);
- УстановитьМинимальноеКоличествоВызововЗаИтерацию(_МинимальноеКоличествоВызововЗаИтерациюПоУмолчанию);
- УстановитьСортировкуОтчета(_СортировкаОтчетаПоУмолчанию);
- УстановитьКаталогАртефактов(_КаталогАртефактовПоУмолчанию);
+ УстановитьСтратегию(СтратегияПоУмолчанию);
+ УстановитьКоличествоИтераций(КоличествоИтерацийПоУмолчанию);
+ УстановитьКоличествоВызововЗаИтерацию(КоличествоВызововЗаИтерациюПоУмолчанию);
+ УстановитьКоличествоПрогревочныхИтераций(КоличествоПрогревочныхИтерацийПоУмолчанию);
+ УстановитьМинимальноеВремяИтерации(МинимальноеВремяИтерацииПоУмолчанию);
+ УстановитьМинимальноеКоличествоВызововЗаИтерацию(МинимальноеКоличествоВызововЗаИтерациюПоУмолчанию);
+ УстановитьСортировкуОтчета(СортировкаОтчетаПоУмолчанию);
+ УстановитьКаталогАртефактов(КаталогАртефактовПоУмолчанию);
_МодифицированныеПоля.Очистить();
+ ЗапомнитьЗначенияПолейПоУмолчанию();
Если Не ИсточникБенчмарков = Неопределено Тогда
ИзвлекательКонфигурацииБенчмарков.Извлечь(ИсточникБенчмарков, ЭтотОбъект);
@@ -451,10 +520,11 @@
//
// Параметры события:
// * Контекст - Структура:
-// ** ДескрипторыБенчмарков - КоллекцияДескрипторовБенчмарков
// ** Конфигурация - КонфигурацияБенчмарков
-// ** Расшифровка - см. МенеджерРасшифровкиРезультатовБенчмарков.НоваяТаблицаРасшифровки
+// ** ДескрипторыБенчмарков - КоллекцияДескрипторовБенчмарков
+// ** Запуски - Массив из РезультатЗапускаБенчмаркаДто
// ** Отчет - ОтчетБенчмарков
+// ** СредаОкружения - СредаОкруженияБенчмарков
//
// ПередКаждым - Вызывается перед каждым запуском бенчмарка.
// Позволяет подготовить контекст для отдельного теста - например, сбросить состояние объекта,
@@ -473,7 +543,7 @@
// * Контекст - Структура:
// ** ДескрипторБенчмарка - ДескрипторБенчмарка
// ** Параметры - Массив из ПараметрБенчмарка
-// ** Замеры - ТаблицаЗначений - см. МенеджерРасшифровкиРезультатовБенчмарков.НоваяТаблицаЗамеров
+// ** Замеры - Массив из РезультатИтерацииБенчмаркаДто
// ** Статистика - СтатистикаБенчмарка
//
// Параметры:
@@ -485,11 +555,15 @@
// ЭтотОбъект
Функция ДобавитьОбработчикСобытия(ИмяСобытия, Обработчик) Экспорт
- Если _Обработчики[ИмяСобытия] = Неопределено Тогда
- _Обработчики[ИмяСобытия] = Новый Соответствие();
+ Отбор = Новый Структура("Событие, Обработчик", ИмяСобытия, Обработчик);
+ Если _Обработчики.НайтиСтроки(Отбор).Количество() > 0 Тогда
+ Возврат ЭтотОбъект;
КонецЕсли;
- _Обработчики[ИмяСобытия][Обработчик] = Новый Структура("ЕстьПараметры");
+ СтрокаТаблицы = _Обработчики.Добавить();
+ СтрокаТаблицы.Событие = ИмяСобытия;
+ СтрокаТаблицы.Обработчик = Обработчик;
+
УстановитьМодифицированность(ИмяПоля_ОбработчикиСобытий());
Возврат ЭтотОбъект;
@@ -505,9 +579,12 @@
// ЭтотОбъект
Функция УдалитьОбработчикиСобытия(ИмяСобытия) Экспорт
- Если Не _Обработчики[ИмяСобытия] = Неопределено Тогда
- _Обработчики[ИмяСобытия].Очистить();
- КонецЕсли;
+ НайденныеСтроки = _Обработчики.НайтиСтроки(Новый Структура("Событие", ИмяСобытия));
+ Для Каждого СтрокаТаблицы Из НайденныеСтроки Цикл
+ _Обработчики.Удалить(СтрокаТаблицы);
+ КонецЦикла;
+
+ УстановитьМодифицированность(ИмяПоля_ОбработчикиСобытий());
Возврат ЭтотОбъект;
@@ -534,26 +611,7 @@
// * Обработчик - Строка - Экспортный метод экземпляра класса бенчмарков
// - Делегат - Делегат
Функция ОбработчикиСобытий() Экспорт
-
- Результат = Новый ТаблицаЗначений();
- Результат.Колонки.Добавить("Событие");
- Результат.Колонки.Добавить("Обработчик");
-
- Для Каждого ОбработчикиСобытия Из _Обработчики Цикл
-
- Событие = ОбработчикиСобытия.Ключ;
- Обработчики = ОбработчикиСобытия.Значение;
-
- Для Каждого КлючЗначение Из Обработчики Цикл
- СтрокаТаблицы = Результат.Добавить();
- СтрокаТаблицы.Событие = Событие;
- СтрокаТаблицы.Обработчик = КлючЗначение.Ключ;
- КонецЦикла;
-
- КонецЦикла;
-
- Возврат Результат;
-
+ Возврат _Обработчики.Скопировать();
КонецФункции
// Обработчики события
@@ -568,13 +626,9 @@
Результат = Новый Массив();
- ОбработчикиСобытия = _Обработчики[ИмяСобытия];
- Если ОбработчикиСобытия = Неопределено Тогда
- Возврат Результат;
- КонецЕсли;
-
- Для Каждого Строка Из ОбработчикиСобытия Цикл
- Результат.Добавить(Строка.Ключ);
+ НайденныеСтроки = _Обработчики.НайтиСтроки(Новый Структура("Событие", ИмяСобытия));
+ Для Каждого СтрокаТаблицы Из НайденныеСтроки Цикл
+ Результат.Добавить(СтрокаТаблицы.Обработчик);
КонецЦикла;
Возврат Результат;
@@ -594,23 +648,12 @@
МассивДелегатов = Новый Массив();
- ОбработчикиСобытия = _Обработчики[ИмяСобытия];
- Если ОбработчикиСобытия = Неопределено Тогда
- Возврат МассивДелегатов;
- КонецЕсли;
-
- Для Каждого Строка Из ОбработчикиСобытия Цикл
+ НайденныеСтроки = _Обработчики.НайтиСтроки(Новый Структура("Событие", ИмяСобытия));
+ Для Каждого СтрокаТаблицы Из НайденныеСтроки Цикл
- Обработчик = Строка.Ключ;
- Описание = Строка.Значение;
+ Делегат = ДелегатОбработчика(СтрокаТаблицы.Обработчик, ОбъектБенчмарков);
- Делегат = ДелегатОбработчика(Обработчик, ОбъектБенчмарков);
-
- Если Описание.ЕстьПараметры = Неопределено Тогда
- Описание.ЕстьПараметры = ЕстьПараметрыМетода(Делегат);
- КонецЕсли;
-
- Если Описание.ЕстьПараметры Тогда
+ Если ЕстьПараметрыМетода(Делегат) Тогда
Делегат.УстановитьПараметры(Контекст);
КонецЕсли;
@@ -653,6 +696,7 @@
Инд = _Колонки.Найти(Колонка);
Если Не Инд = Неопределено Тогда
_Колонки.Удалить(Инд);
+ УстановитьМодифицированность(ИмяПоля_Колонки());
КонецЕсли;
Возврат ЭтотОбъект;
@@ -923,23 +967,13 @@
Таблица.Колонки.Добавить("Значение");
Таблица.Колонки.Добавить("Модифицирован", Новый ОписаниеТипов("Булево"));
- ДобавитьСтрокуВТаблицу(Таблица, ИмяПоля_Стратегия(), Стратегия());
- ДобавитьСтрокуВТаблицу(Таблица, ИмяПоля_КоличествоИтераций(), КоличествоИтераций());
- ДобавитьСтрокуВТаблицу(Таблица, ИмяПоля_КоличествоВызововЗаИтерацию(), КоличествоВызововЗаИтерацию());
- ДобавитьСтрокуВТаблицу(Таблица, ИмяПоля_КоличествоПрогревочныхИтераций(), КоличествоПрогревочныхИтераций());
- ДобавитьСтрокуВТаблицу(Таблица, ИмяПоля_МинимальноеВремяИтерации(), МинимальноеВремяИтерации());
- ДобавитьСтрокуВТаблицу(
- Таблица, ИмяПоля_МинимальноеКоличествоВызововЗаИтерацию(), МинимальноеКоличествоВызововЗаИтерацию());
- ДобавитьСтрокуВТаблицу(Таблица, ИмяПоля_СортировкаОтчета(), СортировкаОтчета());
- ДобавитьСтрокуВТаблицу(Таблица, ИмяПоля_КаталогАртефактов(), КаталогАртефактов());
- ДобавитьСтрокуВТаблицу(Таблица, ИмяПоля_ТребуетсяМониторингПамяти(), ТребуетсяМониторингПамяти());
- ДобавитьСтрокуВТаблицу(Таблица, ИмяПоля_Параметры(), Параметры());
- ДобавитьСтрокуВТаблицу(Таблица, ИмяПоля_ИсточникиПараметров(), ИсточникиПараметров());
- ДобавитьСтрокуВТаблицу(Таблица, ИмяПоля_ОбработчикиСобытий(), ОбработчикиСобытий());
- ДобавитьСтрокуВТаблицу(Таблица, ИмяПоля_Колонки(), Колонки());
- ДобавитьСтрокуВТаблицу(Таблица, ИмяПоля_Экспортеры(), Экспортеры());
- ДобавитьСтрокуВТаблицу(Таблица, ИмяПоля_ВерсииИсполняющейСреды(), ВерсииИсполняющейСреды());
-
+ Для Каждого ОписаниеПоля Из ОписанияПолей() Цикл
+ СтрокаТаблицы = Таблица.Добавить();
+ СтрокаТаблицы.Имя = ОписаниеПоля.Имя;
+ СтрокаТаблицы.Значение = ОписаниеПоля.Геттер.Исполнить();
+ СтрокаТаблицы.Модифицирован = _МодифицированныеПоля[ОписаниеПоля.Имя];
+ КонецЦикла;
+
Возврат Таблица;
КонецФункции
@@ -1013,15 +1047,67 @@
КонецФункции
-Функция ДобавитьСтрокуВТаблицу(Таблица, Имя, Значение)
+Процедура ОпределитьМодифицированныеПоля()
+
+ Для Каждого ОписаниеПоля Из ОписанияПолей() Цикл
+ Значение = _Рефлектор.ПолучитьСвойство(ЭтотОбъект, ОписаниеПоля.ИмяВнутреннее);
+ ЗначениеПоУмолчанию = _ЗначенияПолейПоУмолчанию[ОписаниеПоля.Имя];
+
+ Если Не Компаратор.Совпадают(Значение, ЗначениеПоУмолчанию) Тогда
+ УстановитьМодифицированность(ОписаниеПоля.Имя);
+ КонецЕсли;
+ КонецЦикла;
+
+КонецПроцедуры
+
+Процедура ЗапомнитьЗначенияПолейПоУмолчанию()
+
+ _ЗначенияПолейПоУмолчанию = Новый Соответствие();
+
+ Для Каждого ОписаниеПоля Из ОписанияПолей() Цикл
+ _ЗначенияПолейПоУмолчанию[ОписаниеПоля.Имя] = _Рефлектор.ПолучитьСвойство(ЭтотОбъект, ОписаниеПоля.ИмяВнутреннее);
+ КонецЦикла;
- Строка = Таблица.Добавить();
- Строка.Имя = Имя;
- Строка.Значение = Значение;
- Строка.Модифицирован = _МодифицированныеПоля[Имя];
+КонецПроцедуры
+
+Функция ОписанияПолей()
+
+ Если Не _ОписанияПолей = Неопределено Тогда
+ Возврат _ОписанияПолей;
+ КонецЕсли;
- Возврат Строка;
+ _ОписанияПолей = Новый ТаблицаЗначений();
+ _ОписанияПолей.Колонки.Добавить("Имя");
+ _ОписанияПолей.Колонки.Добавить("ИмяВнутреннее");
+ _ОписанияПолей.Колонки.Добавить("Геттер");
+
+ СвойстваОбъекта = _Рефлектор.ПолучитьТаблицуСвойств(ЭтотОбъект, Истина);
+
+ Для Каждого Свойство Из СвойстваОбъекта Цикл
+ ИмяПоля = Сред(Свойство.Имя, 2);
+
+ АннотацияГеттер = РаботаСАннотациями.ПолучитьАннотацию(Свойство, "Геттер");
+ Если АннотацияГеттер = Неопределено Тогда
+ Продолжить;
+ КонецЕсли;
+ Геттер = РаботаСАннотациями.ПолучитьЗначениеПараметраАннотации(АннотацияГеттер, "Значение", Свойство.Имя);
+
+ ОписаниеПоля = _ОписанияПолей.Добавить();
+ ОписаниеПоля.Имя = ИмяПоля;
+ ОписаниеПоля.ИмяВнутреннее = Свойство.Имя;
+ ОписаниеПоля.Геттер = Новый Делегат(ЭтотОбъект, Геттер);
+ КонецЦикла;
+
+ Возврат _ОписанияПолей;
+
+КонецФункции
+
+Функция ПустаяТаблицаОбработчикиСобытий()
+ Таблица = Новый ТаблицаЗначений();
+ Таблица.Колонки.Добавить("Событие");
+ Таблица.Колонки.Добавить("Обработчик");
+ Возврат Таблица;
КонецФункции
Функция ПустаяТаблицаВерсииИсполняющейСреды()
@@ -1039,18 +1125,109 @@
Возврат Таблица;
КонецФункции
-#Область Модифицированность
+#Область Сериализация
+
+&ПередСериализацией
+Процедура ПередСериализацией() Экспорт
+
+ ПроверитьИсточникиПараметровПередСериализацией();
-Процедура УстановитьМодифицированность(ИмяПоля_)
- _МодифицированныеПоля[ИмяПоля_] = Истина;
КонецПроцедуры
-Процедура ПрименитьМодифицированноеПоле(ИмяПоля, МетодУстановки, ЗначенияМодифицированныхПолей)
+&ПослеДесериализации
+Процедура ПослеДесериализации(Десериализатор, ПрочитанныеСвойства) Экспорт
+
+ ДесериализоватьОбработчики(ПрочитанныеСвойства);
+ ДесериализоватьЭкспортеры(ПрочитанныеСвойства);
+
+ ОпределитьМодифицированныеПоля();
+ Валидировать();
+
+КонецПроцедуры
+
+&Сериализуемое("Handlers")
+Функция СериализацияПолучитьОбработчикиСобытий() Экспорт
+
+ Таблица = ПроцессорыКоллекций.ИзКоллекции(_Обработчики)
+ .Фильтровать("Элемент -> ТипЗнч(Элемент.Обработчик) = Тип(""Строка"")")
+ .Получить(Тип("ТаблицаЗначений"));
+
+ Таблица.Колонки.Событие.Имя = "Event";
+ Таблица.Колонки.Обработчик.Имя = "Handler";
+
+ Возврат Таблица;
+
+КонецФункции
+
+&Сериализуемое("Exporters")
+Функция СериализацияПолучитьИменаЭкспортеров() Экспорт
+
+ Экспортеры = Новый Массив;
+
+ Для Каждого Экспортер Из _Экспортеры Цикл
+ Экспортеры.Добавить(Строка(ТипЗнч(Экспортер)));
+ КонецЦикла;
+
+ Возврат Экспортеры;
+
+КонецФункции
+
+Процедура ПроверитьИсточникиПараметровПередСериализацией()
+
+ Для Каждого ИсточникПараметров Из _ИсточникиПараметров Цикл
+ Тип = ТипЗнч(ИсточникПараметров.Источник);
+ Если Тип <> Тип("Строка") Тогда
+ ВызватьИсключение СтрШаблон("Источник параметров типа <%1> не поддерживает сериализацию.", Тип);
+ КонецЕсли;
+ КонецЦикла;
+
+КонецПроцедуры
+
+Процедура ДесериализоватьОбработчики(ПрочитанныеСвойства)
+
+ Если Не ПрочитанныеСвойства.Свойство("Handlers") Тогда
+ Возврат;
+ КонецЕсли;
+
+ Для Каждого Строка Из ПрочитанныеСвойства["Handlers"] Цикл
+ ДобавитьОбработчикСобытия(Строка["Event"], Строка["Handler"]);
+ КонецЦикла;
+
+КонецПроцедуры
+
+Процедура ДесериализоватьЭкспортеры(ПрочитанныеСвойства)
+
+ Если Не ПрочитанныеСвойства.Свойство("Exporters") Тогда
+ Возврат;
+ КонецЕсли;
+
+ Для Каждого СтрокаТип Из ПрочитанныеСвойства["Exporters"] Цикл
+ ДобавитьЭкспортер(Новый(СтрокаТип));
+ КонецЦикла;
+
+КонецПроцедуры
- Если _Рефлектор = Неопределено Тогда
- _Рефлектор = Новый Рефлектор();
+Процедура Валидировать()
+
+ Валидатор = Новый Валидатор;
+
+ Результат = Валидатор.Валидировать(ЭтотОбъект);
+ Если Результат.Количество() > 0 Тогда
+ ВызватьИсключение Валидатор.ОписаниеОшибокВалидации(Результат);
КонецЕсли;
+КонецПроцедуры
+
+#КонецОбласти
+
+#Область Модифицированность
+
+Процедура УстановитьМодифицированность(ИмяПоля)
+ _МодифицированныеПоля[ИмяПоля] = Истина;
+КонецПроцедуры
+
+Процедура ПрименитьМодифицированноеПоле(ИмяПоля, МетодУстановки, ЗначенияМодифицированныхПолей)
+
Если Не ЗначенияМодифицированныхПолей[ИмяПоля] = Неопределено Тогда
Параметры = Новый Массив();
@@ -1195,7 +1372,7 @@
КонецФункции
Функция ИмяПоля_ОбработчикиСобытий()
- Возврат "ОбработчикиСобытий";
+ Возврат "Обработчики";
КонецФункции
Функция ИмяПоля_Колонки()
diff --git "a/src/BenchmarkOneScript/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\240\320\260\321\201\321\210\320\270\321\204\321\200\320\276\320\262\320\272\320\270\320\240\320\265\320\267\321\203\320\273\321\214\321\202\320\260\321\202\320\276\320\262\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262.os" "b/src/BenchmarkOneScript/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\240\320\260\321\201\321\210\320\270\321\204\321\200\320\276\320\262\320\272\320\270\320\240\320\265\320\267\321\203\320\273\321\214\321\202\320\260\321\202\320\276\320\262\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262.os"
deleted file mode 100644
index 93a889d..0000000
--- "a/src/BenchmarkOneScript/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\240\320\260\321\201\321\210\320\270\321\204\321\200\320\276\320\262\320\272\320\270\320\240\320\265\320\267\321\203\320\273\321\214\321\202\320\260\321\202\320\276\320\262\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262.os"
+++ /dev/null
@@ -1,210 +0,0 @@
-Перем _Таблица; // см. НоваяТаблицаРасшифровки
-
-// Расшифровка результатов бенчмарков.
-//
-// Параметры:
-// РасшифровкаРезультатов - см. НоваяТаблицаРасшифровки
-// - Неопределено
-Процедура ПриСозданииОбъекта(РасшифровкаРезультатов = Неопределено)
-
- _Таблица = РасшифровкаРезультатов;
-
- Если _Таблица = Неопределено Тогда
- _Таблица = НоваяТаблицаРасшифровки();
- КонецЕсли;
-
-КонецПроцедуры
-
-#Область ПрограммныйИнтерфейс
-
-// Возвращает таблицу с расшифровкой замеров бенчмарков.
-//
-// Возвращаемое значение:
-// см. НоваяТаблицаРасшифровки
-Функция ВТаблицу() Экспорт
- Возврат _Таблица;
-КонецФункции
-
-// Создает новую строку в таблице расшифровки.
-//
-// Возвращаемое значение:
-// СтрокаТаблицыЗначения
-Функция Добавить() Экспорт
-
- СтрокаТаблицы = _Таблица.Добавить();
- СтрокаТаблицы.Параметры = Новый Массив();
- СтрокаТаблицы.Замеры = НоваяТаблицаЗамеров();
- СтрокаТаблицы.Статистика = Новый СтатистикаБенчмарка();
- СтрокаТаблицы.ИсполняющаяСреда = НоваяИсполняющаяСреда();
-
- Возврат СтрокаТаблицы;
-
-КонецФункции
-
-// Связывает каждую строку замеров с эталонной строкой.
-//
-// Алгоритм поиска эталонов (в порядке приоритета):
-// 1. При наличии эталонной версии исполняющей среды:
-// - Ищет строку бенчмарка с идентичным именем и набором параметров в соответствующей эталонной среде
-// 2. При отсутствии эталонной среды, но при наличии эталонного бенчмарка:
-// - Ищет строку бенчмарка в пределах текущей категории бенчмарков, наборов параметров и исполняющей среды
-//
-// Параметры:
-// Конфигурация - КонфигурацияБенчмарков
-Процедура ОпределитьЭталоны(Конфигурация) Экспорт
-
- ЭталоннаяВерсия = Конфигурация.ЭталоннаяВерсияИсполняющейСреды();
-
- Для Каждого СтрокаРасшифровкиЗамеров Из _Таблица Цикл
- СтрокаРасшифровкиЗамеров.Эталон = НайтиЭталонДляСтроки(СтрокаРасшифровкиЗамеров, ЭталоннаяВерсия);
-
- Если Не ЗначениеЗаполнено(ЭталоннаяВерсия) Тогда
- СтрокаРасшифровкиЗамеров.ЭтоЭталон = СтрокаРасшифровкиЗамеров.ДескрипторБенчмарка.ЭтоЭталон();
- Иначе
- СтрокаРасшифровкиЗамеров.ЭтоЭталон =
- ЭталоннаяВерсия = СтрокаРасшифровкиЗамеров.ИсполняющаяСреда.Версия
- Или ЭталоннаяВерсия = СтрокаРасшифровкиЗамеров.ИсполняющаяСреда.Алиас;
- КонецЕсли;
- КонецЦикла;
-
-КонецПроцедуры
-
-// Пересчитывает статистические показатели для всех замеров в таблице
-Процедура ОбновитьСтатистику() Экспорт
- Для Каждого СтрокаРасшифровкиЗамеров Из _Таблица Цикл
- СтрокаРасшифровкиЗамеров.Статистика.Прочитать(СтрокаРасшифровкиЗамеров.Замеры);
- КонецЦикла;
-КонецПроцедуры
-
-#КонецОбласти
-
-#Область СлужебныеПроцедурыИФункции
-
-Функция НайтиЭталонДляСтроки(ВходнаяСтрока, ЭталоннаяВерсияИсполняющейСреды)
-
- Для Каждого СтрокаЭталон Из _Таблица Цикл
-
- ЭтоЭталон = СтрокаЭталон.ДескрипторБенчмарка.ЭтоЭталон();
- ЭтоРазныеСтроки = Не СтрокаЭталон = ВходнаяСтрока;
- ИмяМетодаСовпадает = СтрокаЭталон.ДескрипторБенчмарка.Метод() = ВходнаяСтрока.ДескрипторБенчмарка.Метод();
- КатегорияСовпадает = СтрокаЭталон.ДескрипторБенчмарка.Категория() = ВходнаяСтрока.ДескрипторБенчмарка.Категория();
- ПараметрыСовпадают = ПараметрыСовпадают(СтрокаЭталон, ВходнаяСтрока);
- ВерсияИсполняющейСредыСовпадает = СтрокаЭталон.ИсполняющаяСреда.Версия = ВходнаяСтрока.ИсполняющаяСреда.Версия;
- ЭталоннаяВерсияИсполняющейСредыУказана = ЗначениеЗаполнено(ЭталоннаяВерсияИсполняющейСреды);
- ЭталоннаяВерсияИсполняющейСредыСовпадает = ЭталоннаяВерсияИсполняющейСреды = СтрокаЭталон.ИсполняющаяСреда.Версия
- Или ЭталоннаяВерсияИсполняющейСреды = СтрокаЭталон.ИсполняющаяСреда.Алиас;
-
- ПоискПоЭталоннойСреде = ЭталоннаяВерсияИсполняющейСредыУказана
- И ЭталоннаяВерсияИсполняющейСредыСовпадает
- И ИмяМетодаСовпадает;
-
- ПоискПоЭталонномуБенчмарку = Не ЭталоннаяВерсияИсполняющейСредыУказана
- И ЭтоЭталон
- И КатегорияСовпадает
- И ВерсияИсполняющейСредыСовпадает;
-
- НайденЭталон = ЭтоРазныеСтроки
- И ПараметрыСовпадают
- И (ПоискПоЭталоннойСреде Или ПоискПоЭталонномуБенчмарку);
-
- Если НайденЭталон Тогда
- Возврат СтрокаЭталон;
- КонецЕсли;
-
- КонецЦикла;
-
-КонецФункции
-
-Функция ПараметрыСовпадают(СтрокаПервая, СтрокаВторая)
-
- Если СтрокаПервая.Параметры.Количество() <> СтрокаВторая.Параметры.Количество() Тогда
- Возврат Ложь;
- КонецЕсли;
-
- ПараметрыСовпадают = Истина;
- Для Каждого ПараметрПервой Из СтрокаПервая.Параметры Цикл
-
- ПараметрНайден = Ложь;
- Для Каждого ПараметрВторой Из СтрокаВторая.Параметры Цикл
- Если ПараметрПервой.Имя = ПараметрВторой.Имя
- И ПараметрПервой.Значение = ПараметрВторой.Значение Тогда
- ПараметрНайден = Истина;
- Прервать;
- КонецЕсли;
- КонецЦикла;
-
- Если Не ПараметрНайден Тогда
- ПараметрыСовпадают = Ложь;
- Прервать;
- КонецЕсли;
-
- КонецЦикла;
-
- Возврат ПараметрыСовпадают;
-
-КонецФункции
-
-// Пустая таблица расшифровки
-//
-// Возвращаемое значение:
-// ТаблицаЗначений:
-// * ДескрипторБенчмарка - ДескрипторБенчмарка
-// * Параметры - Массив из ПараметрБенчмарка
-// * Статистика - СтатистикаБенчмарка
-// * Эталон - СтрокаТаблицыЗначений, Неопределено
-// * ЭтоЭталон - Булево
-// * Замеры - см. НоваяТаблицаЗамеров
-// * ИсполняющаяСреда - см. НоваяИсполняющаяСреда
-Функция НоваяТаблицаРасшифровки()
-
- Таблица = Новый ТаблицаЗначений();
- Таблица.Колонки.Добавить("ДескрипторБенчмарка");
- Таблица.Колонки.Добавить("Параметры");
- Таблица.Колонки.Добавить("Статистика");
- Таблица.Колонки.Добавить("Эталон");
- Таблица.Колонки.Добавить("ЭтоЭталон");
- Таблица.Колонки.Добавить("Замеры");
- Таблица.Колонки.Добавить("ИсполняющаяСреда");
-
- Возврат Таблица;
-
-КонецФункции
-
-// Пустая таблица замеров
-//
-// Возвращаемое значение:
-// ТаблицаЗначений:
-// * Этап - см. ЭтапыБенчмарка
-// * НомерИтерации - Число
-// * КоличествоОпераций - Число
-// * Наносекунд - Число - Наносекунд за итерацию
-// * НаносекундЗаОперацию - Число - Наносекунд за операцию
-// * ВыделяемаяПамять - Число - Байт выделяемой памяти за итерацию
-// * ВыделяемаяПамятьЗаОперацию - Число - Байт выделяемой памяти за операцию
-Функция НоваяТаблицаЗамеров()
-
- Таблица = Новый ТаблицаЗначений();
- Таблица.Колонки.Добавить("Этап");
- Таблица.Колонки.Добавить("НомерИтерации");
- Таблица.Колонки.Добавить("КоличествоОпераций");
- Таблица.Колонки.Добавить("Наносекунд");
- Таблица.Колонки.Добавить("НаносекундЗаОперацию");
- Таблица.Колонки.Добавить("ВыделяемаяПамять");
- Таблица.Колонки.Добавить("ВыделяемаяПамятьЗаОперацию");
-
- Возврат Таблица;
-
-КонецФункции
-
-Функция НоваяИсполняющаяСреда()
-
- ИсполняющаяСреда = Новый Структура();
- ИсполняющаяСреда.Вставить("Версия", "");
- ИсполняющаяСреда.Вставить("Алиас", "");
- ИсполняющаяСреда.Вставить("Наименование", "");
-
- Возврат ИсполняющаяСреда;
-
-КонецФункции
-
-#КонецОбласти
diff --git "a/src/BenchmarkOneScript/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\260.os" "b/src/BenchmarkOneScript/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\260.os"
index 28c7fc0..cc184d2 100644
--- "a/src/BenchmarkOneScript/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\260.os"
+++ "b/src/BenchmarkOneScript/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\260.os"
@@ -1,10 +1,15 @@
// BSLLS:ExportVariables-off
+&Сериализуемое("Name")
Перем Имя Экспорт; // Строка
+
+&Сериализуемое("Value")
Перем Значение Экспорт; // Произвольный
+
+&Сериализуемое("IsMethodParameter")
Перем ЭтоПараметрМетода Экспорт; // Булево
-Процедура ПриСозданииОбъекта(пИмя, пЗначение, пЭтоПараметрМетода = Ложь)
+Процедура ПриСозданииОбъекта(пИмя = "", пЗначение = Неопределено, пЭтоПараметрМетода = Ложь)
Имя = пИмя;
Значение = пЗначение;
diff --git "a/src/BenchmarkOneScript/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\234\320\265\321\202\320\276\320\264\320\260\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\260.os" "b/src/BenchmarkOneScript/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\234\320\265\321\202\320\276\320\264\320\260\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\260.os"
new file mode 100644
index 0000000..e5acb1a
--- /dev/null
+++ "b/src/BenchmarkOneScript/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\234\320\265\321\202\320\276\320\264\320\260\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\260.os"
@@ -0,0 +1,73 @@
+#Использовать asserts
+
+&Несериализуемое
+Перем _Параметры; // Массив из ПараметрБенчмарка
+
+Процедура ПриСозданииОбъекта()
+ _Параметры = Новый Массив();
+КонецПроцедуры
+
+// Добавляет параметр бенчмарка в коллекцию
+//
+// Параметры:
+// Параметр - ПараметрБенчмарка
+Процедура Добавить(Параметр) Экспорт
+
+ Ожидаем.Что(Параметр).ИмеетТип("ПараметрБенчмарка");
+ Ожидаем.Что(Параметр.ЭтоПараметрМетода).ЭтоИстина();
+
+ _Параметры.Добавить(Параметр);
+
+КонецПроцедуры
+
+// Возвращает количество параметров
+//
+// Возвращаемое значение:
+// Число
+Функция Количество() Экспорт
+ Возврат _Параметры.Количество();
+КонецФункции
+
+// Возвращает параметр метода по индексу
+//
+// Параметры:
+// Индекс - Число
+//
+// Возвращаемое значение:
+// ПараметрБенчмарка
+Функция Получить(Индекс) Экспорт
+ Возврат _Параметры[Индекс];
+КонецФункции
+
+// Возвращает массив параметров
+//
+// Возвращаемое значение:
+// Массив из ПараметрБенчмарка
+Функция ВМассив() Экспорт
+ Возврат Новый Массив(Новый ФиксированныйМассив(_Параметры));
+КонецФункции
+
+#Область Сериализация
+
+&ПередСериализацией
+Процедура ПередСериализацией(Сериализатор, Результат, СтандартнаяОбработка) Экспорт
+
+ СтандартнаяОбработка = Ложь;
+
+ Результат = Сериализатор.ПреобразоватьОбъектСериализации(_Параметры);
+
+КонецПроцедуры
+
+&ПослеДесериализации
+Процедура ПослеДесериализации(Десериализатор, ПрочитанныеСвойства) Экспорт
+
+ Если ТипЗнч(ПрочитанныеСвойства) = Тип("Массив") Тогда
+ _Параметры = Десериализатор.ПреобразоватьОбъектДесериализации(
+ ПрочитанныеСвойства,
+ Тип("Массив"),
+ Тип("ПараметрБенчмарка"));
+ КонецЕсли;
+
+КонецПроцедуры
+
+#КонецОбласти
\ No newline at end of file
diff --git "a/src/BenchmarkOneScript/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\276\321\201\321\202\321\200\320\276\320\270\321\202\320\265\320\273\321\214\320\236\321\202\321\207\320\265\321\202\320\260\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262.os" "b/src/BenchmarkOneScript/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\276\321\201\321\202\321\200\320\276\320\270\321\202\320\265\320\273\321\214\320\236\321\202\321\207\320\265\321\202\320\260\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262.os"
index 663fdab..0620160 100644
--- "a/src/BenchmarkOneScript/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\276\321\201\321\202\321\200\320\276\320\270\321\202\320\265\320\273\321\214\320\236\321\202\321\207\320\265\321\202\320\260\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262.os"
+++ "b/src/BenchmarkOneScript/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\276\321\201\321\202\321\200\320\276\320\270\321\202\320\265\320\273\321\214\320\236\321\202\321\207\320\265\321\202\320\260\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262.os"
@@ -2,7 +2,7 @@
Перем _ДескрипторыБенчмарков; // КоллекцияДескрипторовБенчмарков
Перем _Конфигурация; // КонфигурацияБенчмарков
-Перем _РасшифровкаРезультатов; // см. МенеджерРасшифровкиРезультатовБенчмарков.НоваяТаблицаРасшифровки
+Перем _ЗапускиБенчмарков; // Массив из РезультатЗапускаБенчмаркаДто
Перем _Отчет; // ОтчетБенчмарков
Перем _КолонкиКонфигурации; // Массив из Строка
@@ -11,12 +11,12 @@
// Параметры:
// ДескрипторыБенчмарков - КоллекцияДескрипторовБенчмарков
// Конфигурация - КонфигурацияБенчмарков
-// РасшифровкаРезультатов - см. МенеджерРасшифровкиРезультатовБенчмарков.НоваяТаблицаРасшифровки
-Процедура ПриСозданииОбъекта(ДескрипторыБенчмарков, Конфигурация, РасшифровкаРезультатов)
+// ЗапускиБенчмарков - Массив из РезультатЗапускаБенчмаркаДто
+Процедура ПриСозданииОбъекта(ДескрипторыБенчмарков, Конфигурация, ЗапускиБенчмарков)
_ДескрипторыБенчмарков = ДескрипторыБенчмарков;
_Конфигурация = Конфигурация;
- _РасшифровкаРезультатов = РасшифровкаРезультатов;
+ _ЗапускиБенчмарков = ЗапускиБенчмарков;
_КолонкиКонфигурации = _Конфигурация.Колонки();
КонецПроцедуры
@@ -51,7 +51,7 @@
Процедура ДобавитьКолонки()
ДобавитьКолонкуПорядкаПоУмолчанию();
- ДобавитьКолонкуРасшифровкаРезультатов();
+ ДобавитьКолонкуРезультатаЗапускаБенчмарка();
ДобавитьКолонку(КолонкиОтчетаБенчмарков.СоздатьМетод());
ДобавитьКолонкуКатегория();
ДобавитьКолонкиПараметров();
@@ -77,16 +77,16 @@
_Отчет.Таблица.Колонки.Добавить(ИмяКолонкиПорядокПоУмолчанию());
КонецПроцедуры
-Процедура ДобавитьКолонкуРасшифровкаРезультатов()
- _Отчет.Таблица.Колонки.Добавить(ИмяКолонкиРасшифровкаРезультатов());
+Процедура ДобавитьКолонкуРезультатаЗапускаБенчмарка()
+ _Отчет.Таблица.Колонки.Добавить(ИмяКолонкиРезультатаЗапускаБенчмарка());
КонецПроцедуры
Процедура ДобавитьКолонкиПараметров()
ДобавленныеИмена = Новый Соответствие();
- Для Каждого Расшифровка Из _РасшифровкаРезультатов Цикл
- Для Каждого Параметр Из Расшифровка.Параметры Цикл
+ Для Каждого РезультатЗапускаБенчмарка Из _ЗапускиБенчмарков Цикл
+ Для Каждого Параметр Из РезультатЗапускаБенчмарка.Параметры Цикл
Если ДобавленныеИмена[Параметр.Имя] = Неопределено Тогда
ДобавитьКолонку(КолонкиОтчетаБенчмарков.СоздатьПараметр(Параметр.Имя));
ДобавленныеИмена.Вставить(Параметр.Имя, Истина);
@@ -108,8 +108,8 @@
ЕстьВерсия = Ложь;
- Для Каждого СтрокаРасшифровкиЗамеров Из _РасшифровкаРезультатов Цикл
- Если ЗначениеЗаполнено(СтрокаРасшифровкиЗамеров.ИсполняющаяСреда.Версия) Тогда
+ Для Каждого РезультатЗапускаБенчмарка Из _ЗапускиБенчмарков Цикл
+ Если ЗначениеЗаполнено(РезультатЗапускаБенчмарка.ИсполняющаяСреда.Версия) Тогда
ЕстьВерсия = Истина;
Прервать;
КонецЕсли;
@@ -209,7 +209,7 @@
СкрываемыеКолонки = Новый Массив();
СкрываемыеКолонки.Добавить(ИмяКолонкиПорядокПоУмолчанию());
- СкрываемыеКолонки.Добавить(ИмяКолонкиРасшифровкаРезультатов());
+ СкрываемыеКолонки.Добавить(ИмяКолонкиРезультатаЗапускаБенчмарка());
Для Каждого Колонка Из _Отчет.Колонки Цикл
Если СкрыватьКолонку(Колонка) Тогда
@@ -245,7 +245,7 @@
Контекст = Новый Структура();
Контекст.Вставить("Значение", СтрокаОтчета[Колонка.Имя]);
- Контекст.Вставить("Статистика", СтрокаОтчета.РасшифровкаРезультатов.Статистика);
+ Контекст.Вставить("Статистика", СтрокаОтчета[ИмяКолонкиРезультатаЗапускаБенчмарка()].Статистика);
Попытка
Скрывать = Действие.Выполнить(Контекст) = Истина;
@@ -270,9 +270,9 @@
НомерБенчмарка = 0;
ПредыдущийБенчмарк = "";
- Для Каждого СтрокаРасшифровкиЗамеров Из _РасшифровкаРезультатов Цикл
+ Для Каждого РезультатЗапускаБенчмарка Из _ЗапускиБенчмарков Цикл
- ИмяБенчмарка = СтрокаРасшифровкиЗамеров.ДескрипторБенчмарка.Метод();
+ ИмяБенчмарка = РезультатЗапускаБенчмарка.ДескрипторБенчмарка.Метод();
Если Не ПредыдущийБенчмарк = ИмяБенчмарка Тогда
НомерБенчмарка = НомерБенчмарка + 1;
ПредыдущийБенчмарк = ИмяБенчмарка;
@@ -280,10 +280,10 @@
СтрокаОтчета = _Отчет.Таблица.Добавить();
СтрокаОтчета[ИмяКолонкиПорядокПоУмолчанию()] = НомерБенчмарка;
- СтрокаОтчета[ИмяКолонкиРасшифровкаРезультатов()] = СтрокаРасшифровкиЗамеров;
+ СтрокаОтчета[ИмяКолонкиРезультатаЗапускаБенчмарка()] = РезультатЗапускаБенчмарка;
Для Каждого Колонка Из _Отчет.Колонки Цикл
- СтрокаОтчета[Колонка.Имя] = Колонка.Значение(СтрокаРасшифровкиЗамеров, Колонка);
+ СтрокаОтчета[Колонка.Имя] = Колонка.Значение(РезультатЗапускаБенчмарка, Колонка);
КонецЦикла;
КонецЦИкла;
@@ -414,25 +414,17 @@
Для Каждого Колонка Из _Отчет.Колонки Цикл
ИмяПараметра = КолонкаОтчетаБенчмарковПараметр.ИмяПараметра(Колонка);
- Если ЗначениеЗаполнено(ИмяПараметра) И КолонкаСодержитТолькоСериализуемыеЗначения(Колонка.Имя) Тогда
+ Если ЗначениеЗаполнено(ИмяПараметра) И КолонкаСодержитТолькоПримитивы(Колонка.Имя) Тогда
ДобавитьСортировку(Сортировка, Колонка.Имя);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
-Процедура ДобавитьСортировку(Сортировка, ИмяКолонки, Направление = "")
-
- Если Не _Отчет.Таблица.Колонки.Найти(ИмяКолонки) = Неопределено Тогда
- Сортировка.Добавить(ИмяКолонки + " " + Направление);
- КонецЕсли;
-
-КонецПроцедуры
-
-Функция КолонкаСодержитТолькоСериализуемыеЗначения(ИмяКолонки)
+Функция КолонкаСодержитТолькоПримитивы(ИмяКолонки)
Для Каждого Строка Из _Отчет.Таблица Цикл
- Если Не СериализацияОбъектовБенчмаркинга.ЗначениеСериализуется(Строка[ИмяКолонки]) Тогда
+ Если Не СериализацияОбъектовБенчмаркинга.ЭтоПримитив(Строка[ИмяКолонки]) Тогда
Возврат Ложь;
КонецЕсли;
КонецЦикла;
@@ -441,6 +433,14 @@
КонецФункции
+Процедура ДобавитьСортировку(Сортировка, ИмяКолонки, Направление = "")
+
+ Если Не _Отчет.Таблица.Колонки.Найти(ИмяКолонки) = Неопределено Тогда
+ Сортировка.Добавить(ИмяКолонки + " " + Направление);
+ КонецЕсли;
+
+КонецПроцедуры
+
Функция ИспользуетсяЭталон()
ЕстьЭталоннаяВерсия = _Конфигурация.ВерсииИсполняющейСреды().Найти(Истина, "ЭтоЭталон") <> Неопределено;
@@ -468,8 +468,8 @@
Возврат "ПорядокПоУмолчанию";
КонецФункции
-Функция ИмяКолонкиРасшифровкаРезультатов()
- Возврат "РасшифровкаРезультатов";
+Функция ИмяКолонкиРезультатаЗапускаБенчмарка()
+ Возврат "РезультатЗапускаБенчмарка";
КонецФункции
#КонецОбласти
\ No newline at end of file
diff --git "a/src/BenchmarkOneScript/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\240\320\265\320\267\321\203\320\273\321\214\321\202\320\260\321\202\321\213\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262.os" "b/src/BenchmarkOneScript/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\240\320\265\320\267\321\203\320\273\321\214\321\202\320\260\321\202\321\213\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262.os"
new file mode 100644
index 0000000..31cfcdd
--- /dev/null
+++ "b/src/BenchmarkOneScript/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\240\320\265\320\267\321\203\320\273\321\214\321\202\320\260\321\202\321\213\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262.os"
@@ -0,0 +1,163 @@
+// BSLLS:ExportVariables-off
+
+&Сериализуемое("HostEnvironmentInfo")
+&Тип("СредаОкруженияБенчмарков")
+Перем СредаОкружения Экспорт; // СредаОкруженияБенчмарков
+
+&Сериализуемое("Configuration")
+&Тип("КонфигурацияБенчмарков")
+Перем Конфигурация Экспорт; // КонфигурацияБенчмарков
+
+&Сериализуемое("BenchmarkDescriptors")
+&Тип("КоллекцияДескрипторовБенчмарков")
+Перем ДескрипторыБенчмарков Экспорт; // КоллекцияДескрипторовБенчмарков
+
+&Сериализуемое("Runs")
+&Тип("Массив")
+&ДляКаждого
+&Тип("РезультатЗапускаБенчмаркаДто")
+Перем Запуски Экспорт; // Массив из РезультатЗапускаБенчмаркаДто
+
+&Несериализуемое
+Перем Отчет Экспорт; // ОтчетБенчмарков
+
+Процедура ПриСозданииОбъекта()
+
+ ДескрипторыБенчмарков = Новый КоллекцияДескрипторовБенчмарков();
+ Конфигурация = Новый КонфигурацияБенчмарков();
+ Отчет = Новый ОтчетБенчмарков();
+ СредаОкружения = Новый СредаОкруженияБенчмарков();
+ Запуски = Новый Массив();
+
+КонецПроцедуры
+
+#Область ПрограммныйИнтерфейс
+
+// Связывает каждую строку замеров с эталонной строкой.
+//
+// Алгоритм поиска эталонов (в порядке приоритета):
+// 1. При наличии эталонной версии исполняющей среды:
+// - Ищет строку бенчмарка с идентичным именем и набором параметров в соответствующей эталонной среде
+// 2. При отсутствии эталонной среды, но при наличии эталонного бенчмарка:
+// - Ищет строку бенчмарка в пределах текущей категории бенчмарков, наборов параметров и исполняющей среды
+Процедура ОпределитьЭталоны() Экспорт
+
+ ЭталоннаяВерсия = Конфигурация.ЭталоннаяВерсияИсполняющейСреды();
+
+ Для Каждого РезультатЗапускаБенчмарка Из Запуски Цикл
+
+ РезультатЗапускаБенчмарка.Эталон = НайтиЭталонДляСтроки(РезультатЗапускаБенчмарка, ЭталоннаяВерсия);
+
+ Если Не ЗначениеЗаполнено(ЭталоннаяВерсия) Тогда
+ РезультатЗапускаБенчмарка.ЭтоЭталон = РезультатЗапускаБенчмарка.ДескрипторБенчмарка.ЭтоЭталон();
+ Иначе
+ РезультатЗапускаБенчмарка.ЭтоЭталон =
+ ЭталоннаяВерсия = РезультатЗапускаБенчмарка.ИсполняющаяСреда.Версия
+ Или ЭталоннаяВерсия = РезультатЗапускаБенчмарка.ИсполняющаяСреда.Алиас;
+ КонецЕсли;
+
+ КонецЦикла;
+
+КонецПроцедуры
+
+// Пересчитывает статистические показатели для всех замеров в таблице
+Процедура ОбновитьСтатистику() Экспорт
+ Для Каждого РезультатЗапускаБенчмарка Из Запуски Цикл
+ РезультатЗапускаБенчмарка.Статистика.Прочитать(РезультатЗапускаБенчмарка.Замеры);
+ КонецЦикла;
+КонецПроцедуры
+
+#КонецОбласти
+
+#Область СлужебныеПроцедурыИФункции
+
+Функция НайтиЭталонДляСтроки(ВходнаяСтрока, ЭталоннаяВерсияИсполняющейСреды)
+
+ Для Каждого РезультатЗапуска Из Запуски Цикл
+
+ ЭтоЭталон = РезультатЗапуска.ДескрипторБенчмарка.ЭтоЭталон();
+ ЭтоРазныеСтроки = Не РезультатЗапуска = ВходнаяСтрока;
+ ИмяМетодаСовпадает = РезультатЗапуска.ДескрипторБенчмарка.Метод() = ВходнаяСтрока.ДескрипторБенчмарка.Метод();
+ КатегорияСовпадает = РезультатЗапуска.ДескрипторБенчмарка.Категория() = ВходнаяСтрока.ДескрипторБенчмарка.Категория();
+ ПараметрыСовпадают = ПараметрыСовпадают(РезультатЗапуска, ВходнаяСтрока);
+ ВерсияИсполняющейСредыСовпадает = РезультатЗапуска.ИсполняющаяСреда.Версия = ВходнаяСтрока.ИсполняющаяСреда.Версия;
+ ЭталоннаяВерсияИсполняющейСредыУказана = ЗначениеЗаполнено(ЭталоннаяВерсияИсполняющейСреды);
+ ЭталоннаяВерсияИсполняющейСредыСовпадает = ЭталоннаяВерсияИсполняющейСреды = РезультатЗапуска.ИсполняющаяСреда.Версия
+ Или ЭталоннаяВерсияИсполняющейСреды = РезультатЗапуска.ИсполняющаяСреда.Алиас;
+
+ ПоискПоЭталоннойСреде = ЭталоннаяВерсияИсполняющейСредыУказана
+ И ЭталоннаяВерсияИсполняющейСредыСовпадает
+ И ИмяМетодаСовпадает;
+
+ ПоискПоЭталонномуБенчмарку = Не ЭталоннаяВерсияИсполняющейСредыУказана
+ И ЭтоЭталон
+ И КатегорияСовпадает
+ И ВерсияИсполняющейСредыСовпадает;
+
+ НайденЭталон = ЭтоРазныеСтроки
+ И ПараметрыСовпадают
+ И (ПоискПоЭталоннойСреде Или ПоискПоЭталонномуБенчмарку);
+
+ Если НайденЭталон Тогда
+ Возврат РезультатЗапуска;
+ КонецЕсли;
+
+ КонецЦикла;
+
+КонецФункции
+
+Функция ПараметрыСовпадают(СтрокаПервая, СтрокаВторая)
+
+ Если СтрокаПервая.Параметры.Количество() <> СтрокаВторая.Параметры.Количество() Тогда
+ Возврат Ложь;
+ КонецЕсли;
+
+ ПараметрыСовпадают = Истина;
+ Для Каждого ПараметрПервой Из СтрокаПервая.Параметры Цикл
+
+ ПараметрНайден = Ложь;
+ Для Каждого ПараметрВторой Из СтрокаВторая.Параметры Цикл
+ Если ПараметрПервой.Имя = ПараметрВторой.Имя
+ И ПараметрПервой.Значение = ПараметрВторой.Значение Тогда
+ ПараметрНайден = Истина;
+ Прервать;
+ КонецЕсли;
+ КонецЦикла;
+
+ Если Не ПараметрНайден Тогда
+ ПараметрыСовпадают = Ложь;
+ Прервать;
+ КонецЕсли;
+
+ КонецЦикла;
+
+ Возврат ПараметрыСовпадают;
+
+КонецФункции
+
+#Область Сериализация
+
+&ПослеДесериализации
+Процедура ПослеДесериализации() Экспорт
+
+ ПереопределитьДескрипторыВЗапусках();
+ ОпределитьЭталоны();
+ ОбновитьСтатистику();
+
+КонецПроцедуры
+
+Процедура ПереопределитьДескрипторыВЗапусках()
+
+ Для Каждого Запуск Из Запуски Цикл
+ Дескриптор = Запуск.ДескрипторБенчмарка;
+ НайденныйДескриптор = ДескрипторыБенчмарков.НайтиПоТипуИИмени(Дескриптор.ТипОбъекта(), Дескриптор.Метод());
+ Если Не НайденныйДескриптор = Неопределено Тогда
+ Запуск.ДескрипторБенчмарка = НайденныйДескриптор;
+ КонецЕсли;
+ КонецЦикла;
+
+КонецПроцедуры
+
+#КонецОбласти
+
+#КонецОбласти
\ No newline at end of file
diff --git "a/src/BenchmarkOneScript/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262.os" "b/src/BenchmarkOneScript/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262.os"
deleted file mode 100644
index ed3ab68..0000000
--- "a/src/BenchmarkOneScript/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262.os"
+++ /dev/null
@@ -1,232 +0,0 @@
-#Использовать logos
-#Использовать asserts
-
-Перем _Лог; // Лог
-
-// Сериализатор конфигурации бенчмарков
-Процедура ПриСозданииОбъекта()
- _Лог = Логирование.ПолучитьЛог("oscript.lib.benchmark.СериализаторКонфигурацииБенчмарков");
-КонецПроцедуры
-
-#Область ПрограммныйИнтерфейс
-
-// Сериализует конфигурацию бенчмарков в JSON-файл
-//
-// Параметры:
-// Конфигурация - КонфигурацияБенчмарков - Конфигурация бенчмарков
-// ИмяФайла - Строка - Имя файла, в который будет записана конфигурация.
-Процедура СериализоватьВJSON(Конфигурация, ИмяФайла) Экспорт
-
- _Лог.Отладка("Начало формирования файла: %1", ИмяФайла);
-
- ПараметрыЗаписиJSON = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Авто, Символы.Таб);
-
- ЗаписьJSON = Новый ЗаписьJSON();
- ЗаписьJSON.ОткрытьФайл(ИмяФайла, "UTF-8", , ПараметрыЗаписиJSON);
- ЗаписатьJSON(ЗаписьJSON, Конвертировать(Конфигурация));
- ЗаписьJSON.Закрыть();
-
- _Лог.Отладка("Завершение формирования файла: %1", ИмяФайла);
-
-КонецПроцедуры
-
-// Десериализует конфигурацию бенчмарков из JSON-файла
-//
-// Параметры:
-// ИмяФайла - Строка - Имя файла, из которого будет прочитана конфигурация.
-//
-// Возвращаемое значение:
-// КонфигурацияБенчмарков
-Функция ДесериализоватьИзJSON(ИмяФайла) Экспорт
-
- _Лог.Отладка("Начало чтения файла: %1", ИмяФайла);
-
- ЧтениеJSON = Новый ЧтениеJSON();
- ЧтениеJSON.ОткрытьФайл(ИмяФайла, "UTF-8");
- Данные = ПрочитатьJSON(ЧтениеJSON, Ложь);
- ЧтениеJSON.Закрыть();
-
- _Лог.Отладка("Завершение чтения файла: %1", ИмяФайла);
-
- Возврат СобратьКонфигурацию(Данные);
-
-КонецФункции
-
-#КонецОбласти
-
-#Область СлужебныеПроцедурыИФункции
-
-Функция Конвертировать(Конфигурация)
-
- Данные = Новый Структура();
-
- Для Каждого СтрокаТаблицы Из Конфигурация.ВТаблицу() Цикл
-
- Если СериализацияОбъектовБенчмаркинга.ЗначениеСериализуется(СтрокаТаблицы.Значение)
- Или СтрокаТаблицы.Имя = "Колонки" Тогда
- Значение = СтрокаТаблицы.Значение;
- ИначеЕсли СтрокаТаблицы.Имя = "Параметры" Тогда
- Значение = КонвертироватьПараметры(СтрокаТаблицы.Значение);
- ИначеЕсли СтрокаТаблицы.Имя = "ОбработчикиСобытий" Тогда
- Значение = КонвертироватьОбработчикиСобытий(СтрокаТаблицы.Значение);
- ИначеЕсли СтрокаТаблицы.Имя = "Экспортеры" Тогда
- Значение = КонвертироватьЭкспортеры(СтрокаТаблицы.Значение);
- ИначеЕсли СтрокаТаблицы.Имя = "ВерсииИсполняющейСреды" Тогда
- Значение = КонвертироватьВерсииИсполняющейСреды(СтрокаТаблицы.Значение);
- ИначеЕсли СтрокаТаблицы.Имя = "ИсточникиПараметров" Тогда
- Значение = КонвертироватьИсточникиПараметров(СтрокаТаблицы.Значение);
- Иначе
- ВызватьИсключение СтрШаблон("Не реализована конвертация параметра '%1'", СтрокаТаблицы.Имя);
- КонецЕсли;
-
- Данные.Вставить(СтрокаТаблицы.Имя, Значение);
-
- КонецЦикла;
-
- Возврат Данные;
-
-КонецФункции
-
-Функция КонвертироватьПараметры(Параметры)
-
- Результат = Новый Массив();
-
- Для Каждого ПараметрБенчмарка Из Параметры Цикл
-
- Значение = Новый Структура();
- Значение.Вставить("Имя", ПараметрБенчмарка.Имя);
- Значение.Вставить("Значение", ПараметрБенчмарка.Значение);
- Значение.Вставить("ЭтоПараметрМетода", ПараметрБенчмарка.ЭтоПараметрМетода);
-
- Результат.Добавить(Значение);
-
- КонецЦикла;
-
- Возврат Результат;
-
-КонецФункции
-
-Функция КонвертироватьОбработчикиСобытий(ОбработчикиСобытий)
-
- Результат = Новый Массив();
-
- Для Каждого Строка Из ОбработчикиСобытий Цикл
-
- Тип = ТипЗнч(Строка.Обработчик);
- Если Тип <> Тип("Строка") Тогда
- ВызватьИсключение СтрШаблон("Обработчик события типа <%1> не поддерживает сериализацию.", Тип);
- КонецЕсли;
-
- Значение = Новый Структура();
- Значение.Вставить("Событие", Строка.Событие);
- Значение.Вставить("Обработчик", Строка.Обработчик);
-
- Результат.Добавить(Значение);
-
- КонецЦикла;
-
- Возврат Результат;
-
-КонецФункции
-
-Функция КонвертироватьЭкспортеры(Экспортеры)
-
- Результат = Новый Массив();
-
- Для Каждого Экспортер Из Экспортеры Цикл
- Результат.Добавить(Строка(ТипЗнч(Экспортер)));
- КонецЦикла;
-
- Возврат Результат;
-
-КонецФункции
-
-Функция КонвертироватьВерсииИсполняющейСреды(Версии)
-
- Результат = Новый Массив();
-
- Для Каждого СтрокаВерсия Из Версии Цикл
- Версия = Новый Структура();
- Версия.Вставить("Версия", СтрокаВерсия.Версия);
- Версия.Вставить("Наименование", СтрокаВерсия.Наименование);
- Версия.Вставить("ЭтоЭталон", СтрокаВерсия.ЭтоЭталон);
-
- Результат.Добавить(Версия);
- КонецЦикла;
-
- Возврат Результат;
-
-КонецФункции
-
-Функция СобратьКонфигурацию(Данные)
-
- Конфигурация = Новый КонфигурацияБенчмарков();
- Конфигурация.УстановитьКоличествоИтераций(Данные.КоличествоИтераций);
- Конфигурация.УстановитьКоличествоВызововЗаИтерацию(Данные.КоличествоВызововЗаИтерацию);
- Конфигурация.УстановитьКоличествоПрогревочныхИтераций(Данные.КоличествоПрогревочныхИтераций);
- Конфигурация.УстановитьМинимальноеВремяИтерации(Данные.МинимальноеВремяИтерации);
- Конфигурация.УстановитьМинимальноеКоличествоВызововЗаИтерацию(Данные.МинимальноеКоличествоВызововЗаИтерацию);
- Конфигурация.УстановитьСтратегию(Данные.Стратегия);
- Конфигурация.УстановитьСортировкуОтчета(Данные.СортировкаОтчета);
- Конфигурация.УстановитьКаталогАртефактов(Данные.КаталогАртефактов);
-
- Если Данные.ТребуетсяМониторингПамяти Тогда
- Конфигурация.ДобавитьМониторингПамяти();
- КонецЕсли;
-
- Для Каждого Параметр Из Данные.Параметры Цикл
- Конфигурация.ДобавитьПараметр(Параметр.Имя, Параметр.Значение);
- КонецЦикла;
-
- Для Каждого ДанныеСобытия Из Данные.ОбработчикиСобытий Цикл
- Конфигурация.ДобавитьОбработчикСобытия(ДанныеСобытия.Событие, ДанныеСобытия.Обработчик);
- КонецЦикла;
-
- Для Каждого Колонка Из Данные.Колонки Цикл
- Конфигурация.ДобавитьКолонку(Колонка);
- КонецЦикла;
-
- Для Каждого Экспортер Из Данные.Экспортеры Цикл
- Конфигурация.ДобавитьЭкспортер(Новый(Тип(Экспортер)));
- КонецЦикла;
-
- Для Каждого ВерсияИсполняющейСреды Из Данные.ВерсииИсполняющейСреды Цикл
- Конфигурация.ДобавитьВерсиюИсполняющейСреды(
- ВерсияИсполняющейСреды.Версия,
- ВерсияИсполняющейСреды.Наименование,
- ВерсияИсполняющейСреды.ЭтоЭталон
- );
- КонецЦикла;
-
- Для Каждого ИсточникПараметров Из Данные.ИсточникиПараметров Цикл
- Конфигурация.ДобавитьИсточникПараметров(ИсточникПараметров.ИмяПоля, ИсточникПараметров.Источник);
- КонецЦикла;
-
- Возврат Конфигурация;
-
-КонецФункции
-
-Функция КонвертироватьИсточникиПараметров(ИсточникиПараметров)
-
- Результат = Новый Массив();
-
- Для Каждого ИсточникПараметров Из ИсточникиПараметров Цикл
-
- Тип = ТипЗнч(ИсточникПараметров.Источник);
- Если Тип <> Тип("Строка") Тогда
- ВызватьИсключение СтрШаблон("Источник параметров типа <%1> не поддерживает сериализацию.", Тип);
- КонецЕсли;
-
- Значение = Новый Структура();
- Значение.Вставить("ИмяПоля", ИсточникПараметров.ИмяПоля);
- Значение.Вставить("Источник", ИсточникПараметров.Источник);
-
- Результат.Добавить(Значение);
-
- КонецЦикла;
-
- Возврат Результат;
-
-КонецФункции
-
-#КонецОбласти
\ No newline at end of file
diff --git "a/src/BenchmarkOneScript/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200\320\235\320\260\321\201\321\202\321\200\320\276\320\265\320\272\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262.os" "b/src/BenchmarkOneScript/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200\320\235\320\260\321\201\321\202\321\200\320\276\320\265\320\272\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262.os"
new file mode 100644
index 0000000..6a95be4
--- /dev/null
+++ "b/src/BenchmarkOneScript/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200\320\235\320\260\321\201\321\202\321\200\320\276\320\265\320\272\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262.os"
@@ -0,0 +1,58 @@
+#Использовать logos
+#Использовать "../../dto"
+
+Перем _Лог; // Лог
+
+// Сериализатор настроек бенчмарков
+Процедура ПриСозданииОбъекта()
+ _Лог = Логирование.ПолучитьЛог("oscript.lib.benchmark.СериализаторНастроекБенчмарков");
+КонецПроцедуры
+
+#Область ПрограммныйИнтерфейс
+
+// Сериализует настройки бенчмарков в JSON-файл
+//
+// Параметры:
+// Дескрипторы - КоллекцияДескрипторовБенчмарков - Коллекция дескрипторов бенчмарков
+// Конфигурация - КонфигурацияБенчмарков - Конфигурация бенчмарков
+// ИмяФайла - Строка - Имя файла, в который будет записана конфигурация
+Процедура ЗаписатьВJson(Дескрипторы, Конфигурация, ИмяФайла) Экспорт
+
+ _Лог.Отладка("Начало формирования файла: %1", ИмяФайла);
+
+ Настройки = Новый НастройкиБенчмарковДто();
+ Настройки.ДескрипторыБенчмарков = Дескрипторы;
+ Настройки.Конфигурация = Конфигурация;
+
+ ЗаписьТекста = Новый ЗаписьТекста(ИмяФайла, "UTF-8");
+ ЗаписьТекста.Записать(СериализацияОбъектовБенчмаркинга.ВJson(Настройки));
+ ЗаписьТекста.Закрыть();
+
+ _Лог.Отладка("Завершение формирования файла: %1", ИмяФайла);
+
+КонецПроцедуры
+
+// Десериализует настройки бенчмарков из JSON-файла
+//
+// Параметры:
+// ИмяФайла - Строка - Имя файла, из которого будет прочитана конфигурация.
+//
+// Возвращаемое значение:
+// НастройкиБенчмарковДто
+Функция ПрочитатьИзJson(ИмяФайла) Экспорт
+
+ _Лог.Отладка("Начало чтения файла: %1", ИмяФайла);
+
+ ЧтениеТекста = Новый ЧтениеТекста(ИмяФайла, "UTF-8");
+ Json = ЧтениеТекста.Прочитать();
+ ЧтениеТекста.Закрыть();
+
+ Настройки = СериализацияОбъектовБенчмаркинга.ИзJson(Json, Тип("НастройкиБенчмарковДто"));
+
+ _Лог.Отладка("Завершение чтения файла: %1", ИмяФайла);
+
+ Возврат Настройки;
+
+КонецФункции
+
+#КонецОбласти
\ No newline at end of file
diff --git "a/src/BenchmarkOneScript/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200\320\240\320\265\320\267\321\203\320\273\321\214\321\202\320\260\321\202\320\276\320\262\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262.os" "b/src/BenchmarkOneScript/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200\320\240\320\265\320\267\321\203\320\273\321\214\321\202\320\260\321\202\320\276\320\262\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262.os"
index c326657..2d444ae 100644
--- "a/src/BenchmarkOneScript/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200\320\240\320\265\320\267\321\203\320\273\321\214\321\202\320\260\321\202\320\276\320\262\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262.os"
+++ "b/src/BenchmarkOneScript/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200\320\240\320\265\320\267\321\203\320\273\321\214\321\202\320\260\321\202\320\276\320\262\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262.os"
@@ -1,5 +1,4 @@
#Использовать logos
-#Использовать xml-parser
Перем _Лог; // Лог
@@ -17,22 +16,15 @@
// Сериализует результаты бенчмарков в JSON-файл
//
// Параметры:
-// РезультатыБенчмарков - Структура - Данные результатов бенчмарков:
-// * Расшифровка - ТаблицаЗначений - см. МенеджерРасшифровкиРезультатовБенчмарков.НоваяТаблицаРасшифровки
-// * СредаОкружения - СредаОкруженияБенчмарков - Информация о среде выполнения бенчмарков
+// РезультатыБенчмарков - РезультатыБенчмарков
// ПолноеИмяФайла - Строка - Полный путь к файлу, в который будут записаны результаты бенчмарков
-Процедура СериализоватьВJSON(РезультатыБенчмарков, ПолноеИмяФайла) Экспорт
+Процедура ЗаписатьВJson(РезультатыБенчмарков, ПолноеИмяФайла) Экспорт
_Лог.Отладка("Начало сериализации результатов в JSON-файл: %1", ПолноеИмяФайла);
-
- Данные = ПодготовитьРезультатыБенчмарковДляСериализации(РезультатыБенчмарков);
- ПараметрыЗаписиJSON = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Авто, Символы.Таб);
-
- ЗаписьJSON = Новый ЗаписьJSON();
- ЗаписьJSON.ОткрытьФайл(ПолноеИмяФайла, "UTF-8", , ПараметрыЗаписиJSON);
- ЗаписатьJSON(ЗаписьJSON, Данные);
- ЗаписьJSON.Закрыть();
+ ЗаписьТекста = Новый ЗаписьТекста(ПолноеИмяФайла, "UTF-8");
+ ЗаписьТекста.Записать(СериализацияОбъектовБенчмаркинга.ВJson(РезультатыБенчмарков));
+ ЗаписьТекста.Закрыть();
_Лог.Отладка("Сериализация в JSON-файл завершена: %1", ПолноеИмяФайла);
@@ -42,392 +34,23 @@
//
// Параметры:
// ПолноеИмяФайла - Строка - Полный путь к JSON-файлу с результатами бенчмарков
-// Конфигурация - КонфигурацияБенчмарков - Конфигурация бенчмарков
//
// Возвращаемое значение:
-// Структура:
-// * Расшифровка - см. МенеджерРасшифровкиРезультатовБенчмарков.НоваяТаблицаРасшифровки
-// * СредаОкружения - СредаОкруженияБенчмарков
-Функция ДесериализоватьИзJSON(ПолноеИмяФайла, Конфигурация) Экспорт
+// РезультатыБенчмарков
+Функция ПрочитатьИзJson(ПолноеИмяФайла) Экспорт
_Лог.Отладка("Начало десериализации из JSON-файла: %1", ПолноеИмяФайла);
- ЧтениеJSON = Новый ЧтениеJSON();
- ЧтениеJSON.ОткрытьФайл(ПолноеИмяФайла, "UTF-8");
- Данные = ПрочитатьJSON(ЧтениеJSON, Ложь);
- ЧтениеJSON.Закрыть();
-
- _Лог.Отладка("Десериализация из JSON-файла завершена: %1", ПолноеИмяФайла);
-
- Возврат СобратьРезультатыБенчмарков(Данные, Конфигурация);
-
-КонецФункции
-
-// Сериализует результаты бенчмарков в XML-файл
-//
-// Параметры:
-// РезультатыБенчмарков - Структура - Данные результатов бенчмарков:
-// * Расшифровка - ТаблицаЗначений - см. МенеджерРасшифровкиРезультатовБенчмарков.НоваяТаблицаРасшифровки
-// * СредаОкружения - СредаОкруженияБенчмарков - Информация о среде выполнения бенчмарков
-// ПолноеИмяФайла - Строка - Полный путь к файлу, в который будут записаны результаты бенчмарков
-Процедура СериализоватьВXML(РезультатыБенчмарков, ПолноеИмяФайла) Экспорт
-
- _Лог.Отладка("Начало сериализации результатов в XML-файл: %1", ПолноеИмяФайла);
-
- Данные = ПодготовитьРезультатыБенчмарковДляСериализации(РезультатыБенчмарков);
-
- // Преобразование данных для корректной записи в XML
- ПодготовитьЗначенияДляЗаписиВXML(Данные);
- ПодготовитьМассивыДляЗаписиВXML(Данные);
-
- Данные = Новый Структура("Отчет", Данные);
-
- // Запись данных в XML-файл
- ПроцессорXML = Новый СериализацияДанныхXML(Ложь);
- ПроцессорXML.ЗаписатьВФайл(Данные, ПолноеИмяФайла, Истина);
-
- _Лог.Отладка("Сериализация в XML-файл завершена: %1", ПолноеИмяФайла);
-
-КонецПроцедуры
-
-#КонецОбласти
-
-#Область СлужебныеПроцедурыИФункции
-
-#Область Сериализация
-
-Функция ПодготовитьРезультатыБенчмарковДляСериализации(РезультатыБенчмарков)
-
- Данные = Новый Структура();
- Данные.Вставить("СредаОкружения", ПодготовитьСредуОкруженияДляСериализации(РезультатыБенчмарков.СредаОкружения));
- Данные.Вставить("Бенчмарки", ПодготовитьРасшифровкуЗамеровДляСериализации(РезультатыБенчмарков.Расшифровка));
-
- Возврат Данные;
-
-КонецФункции
-
-Функция ПодготовитьСредуОкруженияДляСериализации(СредаОкружения)
-
- ИнформацияОПроцессоре = СредаОкружения.ИнформацияОПроцессоре;
-
- ДанныеОкружения = Новый Структура();
- ДанныеОкружения.Вставить("ВерсияBenchmarkOneScript", СредаОкружения.ВерсияБиблиотеки);
- ДанныеОкружения.Вставить("ВерсияОС", СредаОкружения.ВерсияОС);
- ДанныеОкружения.Вставить("ВерсияИсполняющейСреды", СредаОкружения.ВерсияИсполняющейСреды);
- ДанныеОкружения.Вставить("ИмяПроцессора", ИнформацияОПроцессоре.ИмяПроцессора);
- ДанныеОкружения.Вставить("КоличествоПроцессоров", ИнформацияОПроцессоре.КоличествоПроцессоров);
- ДанныеОкружения.Вставить("КоличествоЯдер", ИнформацияОПроцессоре.КоличествоЯдер);
- ДанныеОкружения.Вставить("КоличествоЛогическихПроцессоров", ИнформацияОПроцессоре.КоличествоЛогическихПроцессоров);
-
- Возврат ДанныеОкружения;
-
-КонецФункции
-
-Функция ПодготовитьРасшифровкуЗамеровДляСериализации(Расшифровка)
-
- ДанныеБенчмарки = Новый Массив();
- Для Каждого СтрокаРасшифровкиЗамеров Из Расшифровка Цикл
- ДанныеБенчмарки.Добавить(ПодготовитьСтрокуРасшифровкиЗамеровДляСериализации(СтрокаРасшифровкиЗамеров));
- КонецЦикла;
-
- Возврат ДанныеБенчмарки;
-
-КонецФункции
-
-Функция ПодготовитьСтрокуРасшифровкиЗамеровДляСериализации(Строка)
-
- ДанныеИсполняющаяСреда = Новый Структура();
- ДанныеИсполняющаяСреда.Вставить("Версия", Строка.ИсполняющаяСреда.Версия);
- ДанныеИсполняющаяСреда.Вставить("Алиас", Строка.ИсполняющаяСреда.Алиас);
- ДанныеИсполняющаяСреда.Вставить("Наименование", Строка.ИсполняющаяСреда.Наименование);
-
- ДанныеБенчмарк = Новый Структура();
- ДанныеБенчмарк.Вставить("Тип", Строка(Строка.ДескрипторБенчмарка.ТипОбъекта()));
- ДанныеБенчмарк.Вставить("Метод", Строка.ДескрипторБенчмарка.Метод());
- ДанныеБенчмарк.Вставить("Категория", Строка.ДескрипторБенчмарка.Категория());
- ДанныеБенчмарк.Вставить("ЭтоЭталон", Строка.ДескрипторБенчмарка.ЭтоЭталон());
- ДанныеБенчмарк.Вставить("ИсполняющаяСреда", ДанныеИсполняющаяСреда);
- ДанныеБенчмарк.Вставить("Параметры", ПодготовитьПараметрыДляСериализации(Строка.Параметры));
- ДанныеБенчмарк.Вставить("Статистика", ПодготовитьСтатистикуДляСериализации(Строка.Статистика, Строка.Замеры));
- ДанныеБенчмарк.Вставить("Замеры", ПодготовитьЗамерыДляСериализации(Строка.Замеры));
-
- Для Каждого Параметр Из Строка.Параметры Цикл
- Значение = СериализацияОбъектовБенчмаркинга.ПодготовитьЗначение(Параметр.Значение);
- ДанныеБенчмарк.Параметры.Вставить(Параметр.Имя, Значение);
- КонецЦикла;
-
- Возврат ДанныеБенчмарк;
-
-КонецФункции
-
-Функция ПодготовитьПараметрыДляСериализации(Параметры)
-
- ДанныеПараметры = Новый Структура();
-
- Для Каждого Параметр Из Параметры Цикл
- Значение = СериализацияОбъектовБенчмаркинга.ПодготовитьЗначение(Параметр.Значение);
- ДанныеПараметры.Вставить(Параметр.Имя, Значение);
- КонецЦикла;
-
- Возврат ДанныеПараметры;
-
-КонецФункции
-
-Функция ПодготовитьСтатистикуДляСериализации(Статистика, Замеры)
-
- ДанныеСтатистика = Новый Структура();
- ДанныеСтатистика.Вставить("Значения", Новый Массив());
- ДанныеСтатистика.Вставить("Количество", 0);
- ДанныеСтатистика.Вставить("Мин", Статистика.Мин);
- ДанныеСтатистика.Вставить("Q1", Статистика.НижнийКвартиль);
- ДанныеСтатистика.Вставить("Медиана", Статистика.Медиана);
- ДанныеСтатистика.Вставить("Среднее", Статистика.Среднее);
- ДанныеСтатистика.Вставить("Q3", Статистика.ВерхнийКвартиль);
- ДанныеСтатистика.Вставить("Макс", Статистика.Макс);
- ДанныеСтатистика.Вставить("СтандартноеОтклонение", Статистика.СтандартноеОтклонение);
- ДанныеСтатистика.Вставить("СтандартнаяОшибкаСреднего", Статистика.СтандартнаяОшибкаСреднего);
- ДанныеСтатистика.Вставить("ОперацийВСекунду", Статистика.ОперацийВСекунду);
- ДанныеСтатистика.Вставить("Процентили", Новый Структура());
-
- // BSLLS:MagicNumber-off
- ДанныеСтатистика.Процентили.Вставить("P0", Статистика.Квантиль(0));
- ДанныеСтатистика.Процентили.Вставить("P25", Статистика.Квантиль(0.25));
- ДанныеСтатистика.Процентили.Вставить("P50", Статистика.Квантиль(0.5));
- ДанныеСтатистика.Процентили.Вставить("P67", Статистика.Квантиль(0.67));
- ДанныеСтатистика.Процентили.Вставить("P80", Статистика.Квантиль(0.8));
- ДанныеСтатистика.Процентили.Вставить("P85", Статистика.Квантиль(0.85));
- ДанныеСтатистика.Процентили.Вставить("P90", Статистика.Квантиль(0.90));
- ДанныеСтатистика.Процентили.Вставить("P95", Статистика.Квантиль(0.95));
- ДанныеСтатистика.Процентили.Вставить("P100", Статистика.Квантиль(1));
- // BSLLS:MagicNumber-on
-
- ДанныеСтатистика.Вставить("Память", Новый Структура());
- ДанныеСтатистика.Память.Вставить("ВыделяемаяЗаОперацию", Статистика.ВыделяемаяПамять);
-
- Для Каждого Замер Из Замеры Цикл
- Если Замер.Этап = ЭтапыБенчмарка.Измерение Тогда
- ДанныеСтатистика.Значения.Добавить(Замер.НаносекундЗаОперацию);
- КонецЕсли;
- КонецЦикла;
-
- ДанныеСтатистика.Количество = ДанныеСтатистика.Значения.Количество();
-
- Возврат ДанныеСтатистика;
-
-КонецФункции
-
-Функция ПодготовитьЗамерыДляСериализации(Замеры)
-
- ДанныеЗамеры = Новый Массив();
-
- Для Каждого Замер Из Замеры Цикл
-
- ДанныеЗамер = Новый Структура();
- ДанныеЗамер.Вставить("Этап", Замер.Этап);
- ДанныеЗамер.Вставить("НомерИтерации", Замер.НомерИтерации);
- ДанныеЗамер.Вставить("КоличествоОпераций", Замер.КоличествоОпераций);
- ДанныеЗамер.Вставить("Наносекунд", Замер.Наносекунд);
- ДанныеЗамер.Вставить("НаносекундЗаОперацию", Замер.НаносекундЗаОперацию);
- ДанныеЗамер.Вставить("ВыделяемаяПамять", Замер.ВыделяемаяПамять);
- ДанныеЗамер.Вставить("ВыделяемаяПамятьЗаОперацию", Замер.ВыделяемаяПамятьЗаОперацию);
-
- ДанныеЗамеры.Добавить(ДанныеЗамер);
-
- КонецЦикла;
-
- Возврат ДанныеЗамеры;
+ ЧтениеТекста = Новый ЧтениеТекста(ПолноеИмяФайла, "UTF-8");
+ Json = ЧтениеТекста.Прочитать();
+ ЧтениеТекста.Закрыть();
-КонецФункции
-
-Процедура ПодготовитьМассивыДляЗаписиВXML(Данные)
-
- Для Каждого Строка Из Данные.Бенчмарки Цикл
- ПодготовитьМассивДляЗаписиВXML(Строка.Статистика.Значения, "Значение");
- ПодготовитьМассивДляЗаписиВXML(Строка.Замеры, "Замер");
- КонецЦикла;
-
- ПодготовитьМассивДляЗаписиВXML(Данные.Бенчмарки, "Бенчмарк");
-
-КонецПроцедуры
-
-Процедура ПодготовитьЗначенияДляЗаписиВXML(Данные)
-
- // В xml-parser не все простые типы корректно сериализуются
- Для Каждого Строка Из Данные.Бенчмарки Цикл
- Для Каждого Параметр Из Строка.Параметры Цикл
- Если СериализацияОбъектовБенчмаркинга.ЗначениеСериализуется(Параметр.Значение) Тогда
- Строка.Параметры[Параметр.Ключ] = XMLСтрока(Параметр.Значение);
- КонецЕсли;
- КонецЦикла;
- КонецЦикла;
-
-КонецПроцедуры
-
-Процедура ПодготовитьМассивДляЗаписиВXML(Массив, Имя)
-
- Для Инд = 0 По Массив.ВГраница() Цикл
- Значение = Массив[Инд];
- Массив[Инд] = Новый Структура(Имя, Значение);
- КонецЦикла;
-
-КонецПроцедуры
-
-#КонецОбласти
-
-#Область Десериализация
-
-Функция СобратьРезультатыБенчмарков(Данные, Конфигурация)
-
- // Расшифровка замеров
- МенеджерРасшифровкиРезультатов = Новый МенеджерРасшифровкиРезультатовБенчмарков();
-
- ДескрипторыБенчмарков = Новый Соответствие();
-
- Для Каждого ДанныеБенчмарк Из Данные.Бенчмарки Цикл
-
- ДескрипторБенчмарка = СобратьДескрипторБенчмарка(ДанныеБенчмарк, ДескрипторыБенчмарков, Конфигурация);
-
- СтрокаТаблицы = МенеджерРасшифровкиРезультатов.Добавить();
- СтрокаТаблицы.ДескрипторБенчмарка = ДескрипторБенчмарка;
- СтрокаТаблицы.ИсполняющаяСреда.Версия = ДанныеБенчмарк.ИсполняющаяСреда.Версия;
- СтрокаТаблицы.ИсполняющаяСреда.Алиас = ДанныеБенчмарк.ИсполняющаяСреда.Алиас;
- СтрокаТаблицы.ИсполняющаяСреда.Наименование = ДанныеБенчмарк.ИсполняющаяСреда.Наименование;
-
- ЗаполнитьПараметрыВСтроке(СтрокаТаблицы, ДанныеБенчмарк);
- ЗаполнитьЗамерыВСтроке(СтрокаТаблицы, ДанныеБенчмарк);
-
- КонецЦикла;
-
- МенеджерРасшифровкиРезультатов.ОпределитьЭталоны(Конфигурация);
- МенеджерРасшифровкиРезультатов.ОбновитьСтатистику();
-
- // Среда окружения
- ДанныеОкружения = Данные.СредаОкружения;
-
- ИнформацияОПроцессоре = Новый ИнформацияОПроцессоре(Ложь);
- ИнформацияОПроцессоре.ИмяПроцессора = ДанныеОкружения.ИмяПроцессора;
- ИнформацияОПроцессоре.КоличествоПроцессоров = ДанныеОкружения.КоличествоПроцессоров;
- ИнформацияОПроцессоре.КоличествоЯдер = ДанныеОкружения.КоличествоЯдер;
- ИнформацияОПроцессоре.КоличествоЛогическихПроцессоров = ДанныеОкружения.КоличествоЛогическихПроцессоров;
-
- СредаОкружения = Новый СредаОкруженияБенчмарков();
- СредаОкружения.ВерсияБиблиотеки = ДанныеОкружения.ВерсияBenchmarkOneScript;
- СредаОкружения.ВерсияОС = ДанныеОкружения.ВерсияОС;
- СредаОкружения.ВерсияИсполняющейСреды = ДанныеОкружения.ВерсияИсполняющейСреды;
- СредаОкружения.ИнформацияОПроцессоре = ИнформацияОПроцессоре;
-
- // Подготовка результата
- Результат = Новый Структура();
- Результат.Вставить("Расшифровка", МенеджерРасшифровкиРезультатов.ВТаблицу());
- Результат.Вставить("СредаОкружения", СредаОкружения);
-
- Возврат Результат;
-
-КонецФункции
-
-Функция СобратьДескрипторБенчмарка(ДанныеБенчмарк, ДескрипторыБенчмарков, Конфигурация)
-
- Тип = Тип(ДанныеБенчмарк.Тип);
- ЭталоннаяВерсия = Конфигурация.ЭталоннаяВерсияИсполняющейСреды();
-
- Если ДескрипторыБенчмарков[Тип] = Неопределено Тогда
- ДескрипторыБенчмарков[Тип] = Новый Соответствие();
- КонецЕсли;
-
- ДескрипторБенчмарка = ДескрипторыБенчмарков[Тип][ДанныеБенчмарк.Метод];
- Если Не ДескрипторБенчмарка = Неопределено Тогда
- Возврат ДескрипторБенчмарка;
- КонецЕсли;
-
- ДескрипторБенчмарка = Новый ДескрипторБенчмарка(Тип, ДанныеБенчмарк.Метод);
-
- Если ДанныеБенчмарк.ЭтоЭталон И Не ЗначениеЗаполнено(ЭталоннаяВерсия) Тогда
- ДескрипторБенчмарка.ИспользоватьКакЭталон(ДанныеБенчмарк.ЭтоЭталон);
- КонецЕсли;
-
- Если ЗначениеЗаполнено(ДанныеБенчмарк.Категория) Тогда
- ДескрипторБенчмарка.УстановитьКатегорию(ДанныеБенчмарк.Категория);
- КонецЕсли;
-
- ДескрипторыБенчмарков[Тип].Вставить(ДанныеБенчмарк.Метод, ДескрипторБенчмарка);
-
- Возврат ДескрипторБенчмарка;
-
-КонецФункции
-
-Процедура ЗаполнитьПараметрыВСтроке(СтрокаРезультата, ДанныеБенчмарк)
-
- ИменаПараметровБенчмарка = СтрокаРезультата.ДескрипторБенчмарка.ИменаПараметров();
- КоличествоПараметров = ИменаПараметровБенчмарка.Количество();
-
- Если КоличествоПараметров = 0 Тогда
- ПараметрыМетода = Новый Массив();
- Иначе
- ПараметрыМетода = Новый Массив(КоличествоПараметров);
- КонецЕсли;
-
- Для Каждого ДанныеПараметр Из ДанныеБенчмарк.Параметры Цикл
-
- Имя = ДанныеПараметр.Ключ;
- Значение = ДанныеПараметр.Значение;
-
- ИндексПараметра = ИменаПараметровБенчмарка.Найти(Имя);
- ЭтоПараметрМетода = Не ИндексПараметра = Неопределено;
-
- ПараметрБенчмарка = Новый ПараметрБенчмарка(Имя, Значение, ЭтоПараметрМетода);
- СтрокаРезультата.Параметры.Добавить(ПараметрБенчмарка);
+ РезультатыБенчмарков = СериализацияОбъектовБенчмаркинга.ИзJson(Json, Тип("РезультатыБенчмарков"));
- Если ЭтоПараметрМетода Тогда
- ПараметрыМетода[ИндексПараметра] = Значение;
- КонецЕсли;
-
- КонецЦикла;
-
- Если ПараметрыМетода.Количество() > 0
- И ОтсутствуетНаборПараметровБенчмарка(СтрокаРезультата.ДескрипторБенчмарка, ПараметрыМетода) Тогда
- СтрокаРезультата.ДескрипторБенчмарка.ДобавитьПараметры(ПараметрыМетода);
- КонецЕсли;
-
-КонецПроцедуры
-
-Функция ОтсутствуетНаборПараметровБенчмарка(ДескрипторБенчмарка, ПараметрыМетода)
-
- НайденНабор = Ложь;
- Для Каждого НаборПараметров Из ДескрипторБенчмарка.НаборыПараметров() Цикл
- НайденНабор = Истина;
- Для Инд = 0 По НаборПараметров.ВГраница() Цикл
- Если Не НаборПараметров[Инд].Значение = ПараметрыМетода[Инд] Тогда
- НайденНабор = Ложь;
- Прервать;
- КонецЕсли;
- КонецЦикла;
- КонецЦикла;
-
- Возврат Не НайденНабор;
-
-КонецФункции
-
-Процедура ЗаполнитьЗамерыВСтроке(СтрокаРезультата, ДанныеБенчмарк)
-
- Для Каждого ДанныеЗамер Из ДанныеБенчмарк.Замеры Цикл
-
- СтрокаЗамера = СтрокаРезультата.Замеры.Добавить();
- СтрокаЗамера.Этап = ДанныеЗамер.Этап;
- СтрокаЗамера.НомерИтерации = ВЧисло(ДанныеЗамер.НомерИтерации);
- СтрокаЗамера.КоличествоОпераций = ВЧисло(ДанныеЗамер.КоличествоОпераций);
- СтрокаЗамера.Наносекунд = ВЧисло(ДанныеЗамер.Наносекунд);
- СтрокаЗамера.НаносекундЗаОперацию = ВЧисло(ДанныеЗамер.НаносекундЗаОперацию);
- СтрокаЗамера.ВыделяемаяПамять = ВЧисло(ДанныеЗамер.ВыделяемаяПамять);
- СтрокаЗамера.ВыделяемаяПамятьЗаОперацию = ВЧисло(ДанныеЗамер.ВыделяемаяПамятьЗаОперацию);
+ _Лог.Отладка("Десериализация из JSON-файла завершена: %1", ПолноеИмяФайла);
- КонецЦикла;
+ Возврат РезультатыБенчмарков;
-КонецПроцедуры
-
-Функция ВЧисло(Значение)
- Возврат XMLЗначение(Тип("Число"), Значение);
КонецФункции
-#КонецОбласти
-
#КонецОбласти
\ No newline at end of file
diff --git "a/src/BenchmarkOneScript/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\321\200\320\265\320\264\320\260\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262.os" "b/src/BenchmarkOneScript/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\321\200\320\265\320\264\320\260\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262.os"
index 7c36a66..153da6e 100644
--- "a/src/BenchmarkOneScript/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\321\200\320\265\320\264\320\260\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262.os"
+++ "b/src/BenchmarkOneScript/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\321\200\320\265\320\264\320\260\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262.os"
@@ -1,13 +1,40 @@
+// BSLLS:UnusedLocalVariable-off
// BSLLS:ExportVariables-off
#Использовать cpuinfo
#Использовать packageinfo
+&Сериализуемое("BenchmarkOneScriptVersion")
+&Тип("Строка")
Перем ВерсияБиблиотеки Экспорт; // Строка
+
+&Сериализуемое("OsVersion")
+&Тип("Строка")
Перем ВерсияОС Экспорт; // Строка
+
+&Сериализуемое("RuntimeVersion")
+&Тип("Строка")
Перем ВерсияИсполняющейСреды Экспорт; // Строка
+
+&Несериализуемое
Перем ИнформацияОПроцессоре Экспорт; // см. ИнформацияОПроцессоре
+&Сериализуемое("ProcessorName")
+&Тип("Строка")
+Перем ИмяПроцессора; // Строка
+
+&Сериализуемое("PhysicalProcessorCount")
+&Тип("Число")
+Перем КоличествоПроцессоров; // Число
+
+&Сериализуемое("PhysicalCoreCount")
+&Тип("Число")
+Перем КоличествоЯдер; // Число
+
+&Сериализуемое("LogicalCoreCount")
+&Тип("Число")
+Перем КоличествоЛогическихПроцессоров; // Число
+
Процедура ПриСозданииОбъекта()
СистемнаяИнформация = Новый СистемнаяИнформация();
@@ -19,6 +46,8 @@
КонецПроцедуры
+#Область ПрограммныйИнтерфейс
+
Функция ВСтроку() Экспорт
Процессор = ИнформацияОПроцессоре.ПолноеОписание();
@@ -35,6 +64,35 @@
КонецФункции
+#КонецОбласти
+
+#Область СлужебныеПроцедурыИФункции
+
+#Область Сериализация
+
+&ПередСериализацией
+Процедура ПередСериализацией() Экспорт
+
+ ИмяПроцессора = ИнформацияОПроцессоре.ИмяПроцессора;
+ КоличествоПроцессоров = ИнформацияОПроцессоре.КоличествоПроцессоров;
+ КоличествоЯдер = ИнформацияОПроцессоре.КоличествоЯдер;
+ КоличествоЛогическихПроцессоров = ИнформацияОПроцессоре.КоличествоЛогическихПроцессоров;
+
+КонецПроцедуры
+
+&ПослеДесериализации
+Процедура ПослеДесериализации() Экспорт
+
+ ИнформацияОПроцессоре = Новый ИнформацияОПроцессоре(Ложь);
+ ИнформацияОПроцессоре.ИмяПроцессора = ИмяПроцессора;
+ ИнформацияОПроцессоре.КоличествоПроцессоров = КоличествоПроцессоров;
+ ИнформацияОПроцессоре.КоличествоЯдер = КоличествоЯдер;
+ ИнформацияОПроцессоре.КоличествоЛогическихПроцессоров = КоличествоЛогическихПроцессоров;
+
+КонецПроцедуры
+
+#КонецОбласти
+
Функция ОпределитьВерсию()
ПутьКФайлу = ОбъединитьПути(ТекущийСценарий().Каталог, "../../../../packagedef");
@@ -43,3 +101,5 @@
Возврат ИнформацияОПакете.Версия();
КонецФункции
+
+#КонецОбласти
\ No newline at end of file
diff --git "a/src/BenchmarkOneScript/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\321\202\320\260\321\202\320\270\321\201\321\202\320\270\320\272\320\260\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\260.os" "b/src/BenchmarkOneScript/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\321\202\320\260\321\202\320\270\321\201\321\202\320\270\320\272\320\260\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\260.os"
index d16f007..ba3528d 100644
--- "a/src/BenchmarkOneScript/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\321\202\320\260\321\202\320\270\321\201\321\202\320\270\320\272\320\260\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\260.os"
+++ "b/src/BenchmarkOneScript/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\321\202\320\260\321\202\320\270\321\201\321\202\320\270\320\272\320\260\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\260.os"
@@ -4,27 +4,69 @@
#Использовать fluent
#Использовать asserts
-Перем Среднее Экспорт; // Число
-Перем СтандартноеОтклонение Экспорт; // Число
-Перем СтандартнаяОшибкаСреднего Экспорт; // Число
-Перем Медиана Экспорт; // Число
+&Сериализуемое("OriginalValues")
+Перем _ЗамерыВремени; // Массив из Число
+
+&Сериализуемое("N")
+&Тип("Число")
+Перем КоличествоИтераций Экспорт; // Число
+
+&Сериализуемое("Min")
+&Тип("Число")
Перем Мин Экспорт; // Число
-Перем Макс Экспорт; // Число
+
+&Сериализуемое("Q1")
+&Тип("Число")
Перем НижнийКвартиль Экспорт; // Число
+
+&Сериализуемое("Median")
+&Тип("Число")
+Перем Медиана Экспорт; // Число
+
+&Сериализуемое("Mean")
+&Тип("Число")
+Перем Среднее Экспорт; // Число
+
+&Сериализуемое("Q3")
+&Тип("Число")
Перем ВерхнийКвартиль Экспорт; // Число
+
+&Сериализуемое("Max")
+&Тип("Число")
+Перем Макс Экспорт; // Число
+
+&Сериализуемое("StdDev")
+&Тип("Число")
+Перем СтандартноеОтклонение Экспорт; // Число
+
+&Сериализуемое("StdErr")
+&Тип("Число")
+Перем СтандартнаяОшибкаСреднего Экспорт; // Число
+
+&Сериализуемое("Ops")
+&Тип("Число")
Перем ОперацийВСекунду Экспорт; // Число
+
+&Сериализуемое("BytesAllocatedPerOperation")
+&Тип("Число")
Перем ВыделяемаяПамять Экспорт; // Число
-Перем _ЗамерыВремени; // Массив из Число
+&НеСериализуемое
Перем _УпорядоченныеЗамерыВремени; // Массив из Число
+
+&НеСериализуемое
Перем _ЗамерыПамяти; // Массив из Число
+
+&НеСериализуемое
Перем _ИсходныеПоказатели; // Структура
+
+&НеСериализуемое
Перем _ТекущаяЕдиницаВремени; // ЕдиницаИзмеренияБенчмарка
// Статистика бенчмарка
//
// Параметры:
-// Замеры - ТаблицаЗначений - см. МенеджерРасшифровкиРезультатовБенчмарков.НоваяТаблицаЗамеров
+// Замеры - Массив из РезультатИтерацииБенчмаркаДто
// - Структура:
// * ЗамерыВремени - Массив из Число
// * ЗамерыПамяти - Массив из Число
@@ -67,7 +109,7 @@
// Читает замеры и формирует статистику
//
// Параметры:
-// Замеры - ТаблицаЗначений - см. МенеджерРасшифровкиРезультатовБенчмарков.НоваяТаблицаЗамеров
+// Замеры - Массив из РезультатИтерацииБенчмаркаДто
// - Структура:
// * ЗамерыВремени - Массив из Число
// * ЗамерыПамяти - Массив из Число
@@ -76,7 +118,7 @@
// ЭтотОбъект
Функция Прочитать(Замеры) Экспорт
- Если ТипЗнч(Замеры) = Тип("ТаблицаЗначений") Тогда
+ Если ТипЗнч(Замеры) = Тип("Массив") Тогда
_ЗамерыВремени = ВыгрузитьЗамеры(Замеры, "НаносекундЗаОперацию", ЭтапыБенчмарка.Измерение);
_ЗамерыПамяти = ВыгрузитьЗамеры(Замеры, "ВыделяемаяПамятьЗаОперацию", ЭтапыБенчмарка.Память);
ИначеЕсли ТипЗнч(Замеры) = Тип("Структура") Тогда
@@ -251,6 +293,24 @@
#Область СлужебныеПроцедурыИФункции
+#Область Сериализация
+
+&Сериализуемое("Percentiles")
+Функция ПолучитьПроцентили() Экспорт
+
+ Процентили = Новый Структура("P0, P25, P50, P67, P80, P85, P90, P95, P100");
+
+ Для Каждого Строка Из Процентили Цикл
+ Процент = Число(Сред(Строка.Ключ, 2));
+ Процентили[Строка.Ключ] = Квантиль(Процент / 100);
+ КонецЦикла;
+
+ Возврат Процентили;
+
+КонецФункции
+
+#КонецОбласти
+
Процедура Рассчитать()
КоличествоИтераций = _ЗамерыВремени.Количество();
@@ -314,10 +374,15 @@
Функция ВыгрузитьЗамеры(Замеры, Колонка, Этап)
- Возврат ПроцессорыКоллекций.ИзКоллекции(Замеры)
- .Фильтровать("Элемент -> Элемент.Этап = Этап", Новый Структура("Этап", Этап))
- .Получить(Тип("ТаблицаЗначений"))
- .ВыгрузитьКолонку(Колонка);
+ Результат = Новый Массив();
+
+ Для Каждого Замер Из Замеры Цикл
+ Если Замер.Этап = Этап Тогда
+ Результат.Добавить(Замер[Колонка]);
+ КонецЕсли;
+ КонецЦикла;
+
+ Возврат Результат;
КонецФункции
diff --git "a/src/BenchmarkOneScript/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\255\320\272\321\201\320\277\320\276\321\200\321\202\320\265\321\200\320\240\320\265\320\267\321\203\320\273\321\214\321\202\320\260\321\202\320\276\320\262\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262\320\222Html.os" "b/src/BenchmarkOneScript/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\255\320\272\321\201\320\277\320\276\321\200\321\202\320\265\321\200\320\240\320\265\320\267\321\203\320\273\321\214\321\202\320\260\321\202\320\276\320\262\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262\320\222Html.os"
index f2b74cd..9966cff 100644
--- "a/src/BenchmarkOneScript/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\255\320\272\321\201\320\277\320\276\321\200\321\202\320\265\321\200\320\240\320\265\320\267\321\203\320\273\321\214\321\202\320\260\321\202\320\276\320\262\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262\320\222Html.os"
+++ "b/src/BenchmarkOneScript/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\255\320\272\321\201\320\277\320\276\321\200\321\202\320\265\321\200\320\240\320\265\320\267\321\203\320\273\321\214\321\202\320\260\321\202\320\276\320\262\320\221\320\265\320\275\321\207\320\274\320\260\321\200\320\272\320\276\320\262\320\222Html.os"
@@ -12,12 +12,10 @@
//
// Параметры:
// РезультатыБенчмарков - см. Бенчмаркинг.Запустить
-Процедура Записать(РезультатыБенчмарков) Экспорт
+// ПолноеИмяФайла - Строка - Полное имя файла
+Процедура Записать(РезультатыБенчмарков, ПолноеИмяФайла) Экспорт
- КаталогАртефактов = РезультатыБенчмарков.Конфигурация.КаталогАртефактов();
- ПутьКФайлу = ОбъединитьПути(КаталогАртефактов, РезультатыБенчмарков.ИмяКласса + "-report." + Расширение());
-
- _Лог.Отладка("Начало формирования файла: %1", ПутьКФайлу);
+ _Лог.Отладка("Начало формирования файла: %1", ПолноеИмяФайла);
Части = Новый Массив();
Части.Добавить("");
@@ -65,11 +63,11 @@
Части.Добавить("