Skip to content

Commit 257cbad

Browse files
committed
feat: Вывод конфигурации в консоль
1 parent 6c79f94 commit 257cbad

7 files changed

+140
-27
lines changed

docs/CLI.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ benchos run [OPTIONS] [FILE]
1313
| Опция | Описание | Пример |
1414
| --- | --- | --- |
1515
| `-r`, `--recursive` | Рекурсивный поиск в поддиректориях | |
16-
| `--iterationCount` | Количество измерительных итераций | `--iterationCount 10 ` |
16+
| `--iterationCount` | Количество измерительных итераций | `--iterationCount 10` |
1717
| `--iterationTime` | Минимальное время выполнения одной итерации (мс) | `--iterationTime 500` |
1818
| `--warmupCount` | Количество прогревочных итераций | `--warmupCount 10` |
1919
| `--invocationCount` | Количество вызовов метода за итерацию | `--invocationCount 100` |

src/BenchmarkOneScript/core/Классы/ЗапускательБенчмарков.os

Lines changed: 38 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@
5858
_СтатистикаСборщикаМусора = Новый СтатистикаСборщикаМусора();
5959
КонецЕсли;
6060

61+
ВывестиКонфигурацию();
6162
ПрогретьИнструментыЗамера();
6263
ПроверитьБенчмарки();
6364

@@ -155,7 +156,8 @@
155156

156157
Функция ЗапуститьБенчмарк(ДескрипторБенчмарка, Параметры)
157158

158-
ВывестиЗаголовокБенчмарка(ДескрипторБенчмарка, Параметры);
159+
ВывестиЗаголовокБенчмарка(ДескрипторБенчмарка);
160+
ВывестиПараметры(Параметры);
159161

160162
ПараметрыМетода = ПараметрыМетодаБенчмарка(ДескрипторБенчмарка, Параметры);
161163
УстановитьПараметрыОбъекта(Параметры);
@@ -615,49 +617,65 @@
615617

616618
КонецПроцедуры
617619

618-
Процедура ВывестиЗаголовокБенчмарка(ДескрипторБенчмарка, Параметры)
620+
Процедура ВывестиКонфигурацию()
619621

620-
Текст = СтрШаблон("// Бенчмарк: %1.%2", ДескрипторБенчмарка.ТипОбъекта(), ДескрипторБенчмарка.Метод());
622+
ЦветнойВывод.Вывести(Символы.ПС);
623+
ЦветнойВывод.ВывестиСтроку("// Конфигурация", "Малиновый");
624+
ЦветнойВывод.ВывестиСтроку(_Конфигурация.ВСтроку(), "ТемноЖелтый");
625+
626+
КонецПроцедуры
621627

628+
Процедура ВывестиЗаголовокБенчмарка(ДескрипторБенчмарка)
629+
630+
Текст = СтрШаблон("// Бенчмарк: %1.%2", ДескрипторБенчмарка.ТипОбъекта(), ДескрипторБенчмарка.Метод());
631+
622632
ЦветнойВывод.Вывести(Символы.ПС);
623633
ЦветнойВывод.ВывестиСтроку(Текст, "Малиновый");
624634

625-
Цвет = "ТемноЖелтый";
626-
627-
// Параметры
628-
Если Параметры.Количество() > 0 Тогда
635+
КонецПроцедуры
629636

630-
ЦветнойВывод.Вывести("// Параметры: ", Цвет);
637+
Процедура ВывестиПараметры(Параметры)
638+
639+
Цвет = "ТемноЖелтый";
640+
641+
Если Параметры.Количество() = 0 Тогда
642+
Возврат;
643+
КонецЕсли;
631644

632-
ЭтоПервыйПараметр = Истина;
633-
Для Каждого Параметр Из Параметры Цикл
645+
ЦветнойВывод.Вывести("Параметры: ", Цвет);
634646

635-
Если Не ЭтоПервыйПараметр Тогда
636-
ЦветнойВывод.Вывести(", ", Цвет);
637-
КонецЕсли;
638-
639-
ЦветнойВывод.Вывести(СтрШаблон("%1=%2", Параметр.Имя, Строка(Параметр.Значение)), Цвет);
640-
641-
ЭтоПервыйПараметр = Ложь;
647+
ЭтоПервыйПараметр = Истина;
648+
Для Каждого Параметр Из Параметры Цикл
642649

643-
КонецЦикла;
650+
Если Не ЭтоПервыйПараметр Тогда
651+
ЦветнойВывод.Вывести(", ", Цвет);
652+
КонецЕсли;
644653

645-
ЦветнойВывод.ВывестиСтроку("");
654+
ЦветнойВывод.Вывести(СтрШаблон("%1 = %2", Параметр.Имя, Строка(Параметр.Значение)), Цвет);
646655

647-
КонецЕсли;
656+
ЭтоПервыйПараметр = Ложь;
648657

658+
КонецЦикла;
659+
660+
ЦветнойВывод.ВывестиСтроку("");
661+
649662
КонецПроцедуры
650663

651664
Процедура ВывестиРезультатыБенчмарков(Результат)
652665

666+
// Среда окружения
653667
ТекстСреды = Результат.СредаОкружения.ВСтроку();
654668
ТекстСреды = СтрЗаменить(ТекстСреды, Символы.ПС, " \" + Символы.ПС);
655669

656670
ЦветнойВывод.Вывести(Символы.ПС);
657671
ЦветнойВывод.ВывестиСтроку("// Сводка", "Малиновый");
658672
ЦветнойВывод.ВывестиСтроку(ТекстСреды, "ТемноЖелтый");
673+
674+
// Отчет в Markdown
659675
ЦветнойВывод.Вывести(Символы.ПС);
660676
ЦветнойВывод.ВывестиСтроку(Результат.Отчет.КакMarkdown(), "Бирюза");
677+
678+
// Легенда
661679
ЦветнойВывод.Вывести(Символы.ПС);
662680
ЦветнойВывод.ВывестиСтроку("// Легенда", "Малиновый");
663681
ЦветнойВывод.ВывестиСтроку(Результат.Отчет.Легенда(), "Синий");

src/BenchmarkOneScript/core/Классы/КонфигурацияБенчмарков.os

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -775,6 +775,49 @@
775775

776776
КонецФункции
777777

778+
// Строковое представление конфигурации
779+
//
780+
// Возвращаемое значение:
781+
// Строка
782+
Функция ВСтроку() Экспорт
783+
784+
Подстроки = Новый Массив();
785+
Подстроки.Добавить(СтрШаблон("Стратегия = ""%1""", Стратегия()));
786+
Подстроки.Добавить("Измерительных итераций = " + КоличествоИтераций());
787+
788+
Если Стратегия() = СтратегииЗапускаБенчмарка.ПропускнаяСпособность Тогда
789+
790+
Подстроки.Добавить(Символы.ПС);
791+
Подстроки.Добавить("Прогревочных итераций = " + КоличествоПрогревочныхИтераций());
792+
793+
Если КоличествоВызововЗаИтерацию() = 0 Тогда
794+
Подстроки.Добавить(СтрШаблон("Мин. время итерации = %1 мс", МинимальноеВремяИтерации()));
795+
Подстроки.Добавить("Мин. вызовов за итерацию = " + МинимальноеКоличествоВызововЗаИтерацию());
796+
Иначе
797+
Подстроки.Добавить("Вызовов за итерацию = " + КоличествоВызововЗаИтерацию());
798+
КонецЕсли;
799+
800+
КонецЕсли;
801+
802+
Экспортеры = Экспортеры();
803+
Если Экспортеры.Количество() > 0 Тогда
804+
805+
Расширения = Новый Массив();
806+
Для Каждого Экспортер Из Экспортеры Цикл
807+
Расширения.Добавить(Экспортер.Расширение());
808+
КонецЦикла;
809+
810+
Подстроки.Добавить(Символы.ПС);
811+
Подстроки.Добавить("Форматы экспорта = " + СтрСоединить(Расширения, ", "));
812+
Подстроки.Добавить("Каталог артефактов = " + КаталогАртефактов());
813+
814+
КонецЕсли;
815+
816+
Текст = СтрЗаменить(СтрСоединить(Подстроки, ", "), ", " + Символы.ПС + ", ", Символы.ПС);
817+
Возврат Текст;
818+
819+
КонецФункции
820+
778821
#КонецОбласти
779822

780823
#Область СлужебныеПроцедурыИФункции

src/BenchmarkOneScript/core/Классы/ЭкспортерРезультатовБенчмарковВHtml.os

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,19 @@
33

44
Перем _Лог; // Лог
55

6+
// Экспортирует результаты бенчмарков в файл HTML
67
Процедура ПриСозданииОбъекта()
78
_Лог = Логирование.ПолучитьЛог("oscript.lib.benchmark.ЭкспортерРезультатовБенчмарковВHtml");
89
КонецПроцедуры
910

11+
// Экспортирует результаты бенчмарков в файл HTML
12+
//
13+
// Параметры:
14+
// РезультатыБенчмарков - см. Бенчмаркинг.Запустить
1015
Процедура Записать(РезультатыБенчмарков) Экспорт
1116

1217
КаталогАртефактов = РезультатыБенчмарков.Конфигурация.КаталогАртефактов();
13-
ПутьКФайлу = ОбъединитьПути(КаталогАртефактов, РезультатыБенчмарков.ИмяКласса + "-report.html");
18+
ПутьКФайлу = ОбъединитьПути(КаталогАртефактов, РезультатыБенчмарков.ИмяКласса + "-report." + Расширение());
1419

1520
_Лог.Отладка("Начало формирования файла: %1", ПутьКФайлу);
1621

@@ -68,6 +73,14 @@
6873

6974
КонецПроцедуры
7075

76+
// Расширение файла
77+
//
78+
// Возвращаемое значение:
79+
// Строка
80+
Функция Расширение() Экспорт
81+
Возврат "html";
82+
КонецФункции
83+
7184
Функция Css()
7285
Возврат "
7386
|<style type=""text/css"">

src/BenchmarkOneScript/core/Классы/ЭкспортерРезультатовБенчмарковВJson.os

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,19 @@
33

44
Перем _Лог; // Лог
55

6+
// Экспортирует результаты бенчмарков в файл JSON
67
Процедура ПриСозданииОбъекта()
78
_Лог = Логирование.ПолучитьЛог("oscript.lib.benchmark.ЭкспортерРезультатовБенчмарковВJson");
89
КонецПроцедуры
910

11+
// Экспортирует результаты бенчмарков в файл JSON
12+
//
13+
// Параметры:
14+
// РезультатыБенчмарков - см. Бенчмаркинг.Запустить
1015
Процедура Записать(РезультатыБенчмарков) Экспорт
1116

1217
КаталогАртефактов = РезультатыБенчмарков.Конфигурация.КаталогАртефактов();
13-
ПутьКФайлу = ОбъединитьПути(КаталогАртефактов, РезультатыБенчмарков.ИмяКласса + "-report.json");
18+
ПутьКФайлу = ОбъединитьПути(КаталогАртефактов, РезультатыБенчмарков.ИмяКласса + "-report." + Расширение());
1419

1520
_Лог.Отладка("Начало формирования файла: %1", ПутьКФайлу);
1621

@@ -25,4 +30,12 @@
2530

2631
_Лог.Отладка("Завершение формирования файла: %1", ПутьКФайлу);
2732

28-
КонецПроцедуры
33+
КонецПроцедуры
34+
35+
// Расширение файла
36+
//
37+
// Возвращаемое значение:
38+
// Строка
39+
Функция Расширение() Экспорт
40+
Возврат "json";
41+
КонецФункции

src/BenchmarkOneScript/core/Классы/ЭкспортерРезультатовБенчмарковВMarkdown.os

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,19 @@
33

44
Перем _Лог; // Лог
55

6+
// Экспортирует результаты бенчмарков в файл Markdown
67
Процедура ПриСозданииОбъекта()
78
_Лог = Логирование.ПолучитьЛог("oscript.lib.benchmark.ЭкспортерРезультатовБенчмарковВMarkdown");
89
КонецПроцедуры
910

11+
// Экспортирует результаты бенчмарков в файл Markdown
12+
//
13+
// Параметры:
14+
// РезультатыБенчмарков - см. Бенчмаркинг.Запустить
1015
Процедура Записать(РезультатыБенчмарков) Экспорт
1116

1217
КаталогАртефактов = РезультатыБенчмарков.Конфигурация.КаталогАртефактов();
13-
ПутьКФайлу = ОбъединитьПути(КаталогАртефактов, РезультатыБенчмарков.ИмяКласса + "-report.md");
18+
ПутьКФайлу = ОбъединитьПути(КаталогАртефактов, РезультатыБенчмарков.ИмяКласса + "-report." + Расширение());
1419

1520
_Лог.Отладка("Начало формирования файла: %1", ПутьКФайлу);
1621

@@ -22,4 +27,12 @@
2227

2328
_Лог.Отладка("Завершение формирования файла: %1", ПутьКФайлу);
2429

25-
КонецПроцедуры
30+
КонецПроцедуры
31+
32+
// Расширение файла
33+
//
34+
// Возвращаемое значение:
35+
// Строка
36+
Функция Расширение() Экспорт
37+
Возврат "md";
38+
КонецФункции

src/BenchmarkOneScript/core/Классы/ЭкспортерРезультатовБенчмарковВXml.os

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,19 @@
44

55
Перем _Лог; // Лог
66

7+
// Экспортирует результаты бенчмарков в файл XML
78
Процедура ПриСозданииОбъекта()
89
_Лог = Логирование.ПолучитьЛог("oscript.lib.benchmark.ЭкспортерРезультатовБенчмарковВXml");
910
КонецПроцедуры
1011

12+
// Экспортирует результаты бенчмарков в файл XML
13+
//
14+
// Параметры:
15+
// РезультатыБенчмарков - см. Бенчмаркинг.Запустить
1116
Процедура Записать(РезультатыБенчмарков) Экспорт
1217

1318
КаталогАртефактов = РезультатыБенчмарков.Конфигурация.КаталогАртефактов();
14-
ПутьКФайлу = ОбъединитьПути(КаталогАртефактов, РезультатыБенчмарков.ИмяКласса + "-report.xml");
19+
ПутьКФайлу = ОбъединитьПути(КаталогАртефактов, РезультатыБенчмарков.ИмяКласса + "-report." + Расширение());
1520

1621
_Лог.Отладка("Начало формирования файла: %1", ПутьКФайлу);
1722

@@ -26,6 +31,14 @@
2631

2732
КонецПроцедуры
2833

34+
// Расширение файла
35+
//
36+
// Возвращаемое значение:
37+
// Строка
38+
Функция Расширение() Экспорт
39+
Возврат "xml";
40+
КонецФункции
41+
2942
Процедура ПодготовитьМассивы(Данные)
3043

3144
Для Каждого Бенчмарк Из Данные.Бенчмарки Цикл

0 commit comments

Comments
 (0)