Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 3 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@

# BenchmarkOneScript

[![Release](https://img.shields.io/github/release/Stivo182/BenchmarkOneScript.svg)](https://github.com/Stivo182/BenchmarkOneScript/releases)
Expand All @@ -18,7 +17,6 @@

Библиотека для измерения производительности кода на OneScript, вдохновлённая [BenchmarkDotNet](https://github.com/dotnet/BenchmarkDotNet/), с поддержкой параметризации, мониторинга памяти и гибкой настройки тестов.


## Возможности

- **Гибкая настройка:** конфигурация тестов через аннотации, программный код и CLI.
Expand All @@ -28,7 +26,7 @@
- **Метрики:** время выполнения (среднее, минимум, максимум), стандартное отклонение и ошибка, операций в секунду (Op/s), квартили и произвольные процентили.
- **Экспорт результатов:** сохранение результатов выполнения бенчмарков в Markdown, JSON, HTML.

## 🚀 Быстрый старт
## Быстрый старт

## 1. Установка

Expand All @@ -38,7 +36,7 @@ opm install benchmark

## 2. Создание бенчмарка

Создайте класс с методами, помеченными аннотацией `&Бенчмарк`, где каждый метод реализует тестируемую логику.
Создайте класс с методами, помеченными аннотацией `&Бенчмарк`, где каждый метод реализует тестируемую логику.
В следующем примере мы сравниваем алгоритмы конкатенации строк через оператор `+` и метод `СтрСоединить`:

```bsl
Expand Down Expand Up @@ -79,14 +77,13 @@ opm install benchmark
**CLI:**

```bash
benchos run [OPTIONS] [FILE]
benchos run КонкатенацияСтрок.os
```

**API:**

```bsl
#Использовать benchmark
#Использовать "."

Результат = Бенчмаркинг.Запустить(Тип("КонкатенацияСтрок"));
```
Expand Down
43 changes: 26 additions & 17 deletions docs/CLI.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,21 +10,27 @@ benchos run [OPTIONS] [FILE]

### Опции

| Опция | Описание | Пример |
| --- | --- | --- |
| `--iterationCount` | Количество измерительных итераций | `--iterationCount 10` |
| `--iterationTime` | Минимальное время выполнения одной итерации (мс) | `--iterationTime 500` |
| `--warmupCount` | Количество прогревочных итераций | `--warmupCount 10` |
| `--invocationCount` | Количество вызовов метода за итерацию | `--invocationCount 100` |
| `--runtime` | Версии OneScript через запятую (current, stable, dev, x.x.x). | `--runtime dev,stable` |
| `--throughput` | Стратегия выполнения [`ПропускнаяСпособность`](СтратегииЗапуска.md#пропускная-способность-throughput) | |
| `--coldstart` | Стратегия выполнения [`ХолодныйЗапуск`](СтратегииЗапуска.md#холодный-запуск-cold-start) | |
| `-m`, `--memory` | Включить [мониторинг использования памяти](МониторингПамяти.md) | |
| `-e`, `--exporters` | Форматы [экспорта результатов](ЭкспортРезультатов.md) (`md`, `json`, `html`) | `-e json,html` |
| `-a`, `--artifacts` | Каталог для сохранения результатов | `-a path/to/file` |
| `-r`, `--recursive` | Рекурсивный поиск в поддиректориях | |
| `--settings` | Файл настроек бенчмарков в формате JSON | `--settings path/to/settings.json` |
| `--debug` | Порт отладки | `--debug 2801` |
| Опция | Описание | По умолчанию | Пример |
| --- | --- | --- | --- |
| `--iterationCount` | Количество измерительных итераций | `15` | `--iterationCount 10` |
| `--iterationTime` | Минимальное время выполнения одной итерации (мс) | `100` | `--iterationTime 500` |
| `--warmupCount` | Количество прогревочных итераций | `6` | `--warmupCount 10` |
| `--invocationCount` | Количество вызовов метода за итерацию (0 = авто) | `0` | `--invocationCount 100` |
| `--runtime` | Версии OneScript через запятую (`current`, `stable`, `dev`, `x.x.x`) | | `--runtime dev,stable` |
| `--throughput` | Стратегия выполнения [`ПропускнаяСпособность`](СтратегииЗапуска.md#пропускная-способность-throughput) | | |
| `--coldstart` | Стратегия выполнения [`ХолодныйЗапуск`](СтратегииЗапуска.md#холодный-запуск-cold-start) | | |
| `-m`, `--memory` | Включить [мониторинг использования памяти](МониторингПамяти.md) | | |
| `-e`, `--exporters` | Форматы [экспорта результатов](ЭкспортРезультатов.md) через запятую: `md`, `json`, `html` | | `-e json, html` |
| `-a`, `--artifacts` | Каталог для сохранения результатов | `.\BenchmarkArtifacts` | `-a path/to/dir` |
| `-r`, `--recursive` | Рекурсивный поиск в поддиректориях | | |
| `--settings` | Файл настроек бенчмарков в формате JSON | | `--settings path/to/settings.json` |
| `--debug` | Порт отладки | | `--debug 2801` |

### Примечания

- Опции `--throughput` и `--coldstart` взаимно исключают друг друга.
- Значение `--invocationCount 0` включает автоматический расчёт количества вызовов за итерацию.
- Опции `--warmupCount`, `--invocationCount`, `--iterationTime` игнорируются при стратегии `--coldstart`.

## Примеры

Expand All @@ -44,6 +50,9 @@ benchos run /path/to/benchmarks
# Запуск всех бенчмарков в директории, включая вложенные каталоги
benchos run -r /path/to/benchmarks

# Рекурсивный запуск с мониторингом памяти и экспортом в JSON
benchos run -r -m -e json ./benchmarks/
# Рекурсивный запуск с мониторингом памяти и экспортом в JSON и HTML
benchos run -r -m -e 'json, html' ./benchmarks/

# Холодный запуск с 10 итерациями
benchos run --coldstart --iterationCount 10 /path/to/МойКласс.os
```
6 changes: 3 additions & 3 deletions docs/БыстрыйСтарт.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ opm install benchmark

## 2. Создание бенчмарка

Создайте класс с методами, помеченными аннотацией `&Бенчмарк`, где каждый метод реализует тестируемую логику.
Создайте класс с методами, помеченными аннотацией `&Бенчмарк`, где каждый метод реализует тестируемую логику.
В следующем примере мы сравниваем алгоритмы конкатенации строк через оператор `+` и метод `СтрСоединить`:

```bsl
Expand Down Expand Up @@ -42,21 +42,21 @@ opm install benchmark
Текст = СтрСоединить(МассивПодстрок);
КонецПроцедуры
```

## 3. Запуск бенчмарков

Запустите бенчмарки одним из следующих способов:

**CLI:**

```bash
benchos run [OPTIONS] [FILE]
benchos run КонкатенацияСтрок.os
```

**API:**

```bsl
#Использовать benchmark
#Использовать "."

Результат = Бенчмаркинг.Запустить(Тип("КонкатенацияСтрок"));
```
Expand Down
13 changes: 9 additions & 4 deletions docs/ЗапускБенчмарков.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ benchos run [OPTIONS] [FILE]

Подробнее см. в разделе [CLI](CLI.md).

### Примеры использования
### Примеры

```bash
# Запуск по имени класса (файл МойКласс.os должен существовать в текущей директории)
Expand Down Expand Up @@ -47,7 +47,7 @@ benchos run -r -m -e json ./benchmarks/
```bsl
ДескрипторыБенчмарков = Новый КоллекцияДескрипторовБенчмарков(Тип("МойКласс"));

// Запуск конкретного бенчмарка
// Запуск конкретного бенчмарка по имени
ДескрипторБенчмарка = ДескрипторыБенчмарков.НайтиПоИмени("МойБенчмарк");
Результат = Бенчмаркинг.Запустить(ДескрипторБенчмарка);

Expand All @@ -60,10 +60,10 @@ benchos run -r -m -e json ./benchmarks/

```bsl
// Запуск из каталога
Результат = Бенчмаркинг.ЗапуститьИзКаталога("/path/to/benchmarks");
Результаты = Бенчмаркинг.ЗапуститьИзКаталога("/path/to/benchmarks");

// Запуск из каталога, включая вложенные каталоги
Результат = Бенчмаркинг.ЗапуститьИзКаталога("/path/to/benchmarks", Истина);
Результаты = Бенчмаркинг.ЗапуститьИзКаталога("/path/to/benchmarks", Истина);
```

### Запуск с передачей конфигурации
Expand All @@ -84,4 +84,9 @@ benchos run -r -m -e json ./benchmarks/
// ...

Результат = Бенчмаркинг.Запустить(Тип("МойКласс"), Конфигурация);

// Запуск из каталога с конфигурацией, которая объединяется с приоритетом с конфигурацией каждого бенчмарка
Конфигурация = Новый КонфигурацияБенчмарков();
Конфигурация.УстановитьКоличествоИтераций(10);
Результаты = Бенчмаркинг.ЗапуститьИзКаталога("/path/to/benchmarks", Истина, Конфигурация);
```
2 changes: 1 addition & 1 deletion docs/МониторингПамяти.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Мониторинг памяти

Для анализа аллокаций предусмотрена аннотация `&МониторингПамяти`.
Включает дополнительный этап измерения аллокаций памяти. При его использовании в отчёте появляется колонка `Allocated` — объём памяти, выделяемый на одну операцию. Полезно для выявления избыточных аллокаций и сравнения алгоритмов по потреблению памяти.

### Конфигурирование

Expand Down
10 changes: 4 additions & 6 deletions docs/ОбработчикиСобытий.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@
// * Контекст - Структура:
// ** Конфигурация - КонфигурацияБенчмарков
// ** ДескрипторыБенчмарков - КоллекцияДескрипторовБенчмарков
// ** Запуски - Массив из РезультатЗапускаБенчмаркаДто
// ** Запуски - Массив из РезультатЗапускаКейса
// ** Отчет - ОтчетБенчмарков
// ** СредаОкружения - СредаОкруженияБенчмарков
&ПослеВсех
Expand All @@ -43,8 +43,7 @@
```bsl
// Параметры:
// * Контекст - Структура:
// ** ДескрипторБенчмарка - ДескрипторБенчмарка
// ** ПараметрыМетода - Массив из Произвольный
// ** Кейс - КейсБенчмарка
&ПередКаждым
Процедура ПередКаждым(Контекст) Экспорт
```
Expand All @@ -56,9 +55,8 @@
```bsl
// Параметры:
// * Контекст - Структура:
// ** ДескрипторБенчмарка - ДескрипторБенчмарка
// ** Параметры - Массив из ПараметрБенчмарка
// ** Замеры - Массив из РезультатИтерацииБенчмаркаДто
// ** Кейс - КейсБенчмарка
// ** Замеры - Массив из РезультатИтерацииКейса
// ** Статистика - СтатистикаБенчмарка
&ПослеКаждого
Процедура ПослеКаждого(Контекст) Экспорт
Expand Down
Loading
Loading