Документация Engee

Справочные материалы

Страница в процессе перевода.

clear_empty!(group::BenchmarkGroup)

Рекурсивно удаляйте все пустые подгруппы из group.

Используйте это для удаления BenchmarkGroup после обращения к некорректным полям, например, g=BenchmarkGroup(); g[1], без сохранения чего-либо в g[1], что создаст пустую подгруппу g[1].

judge(target::BenchmarkGroup, baseline::BenchmarkGroup; [time_tolerance::Float64=0.05])
judge(target::TrialEstimate, baseline::TrialEstimate; [time_tolerance::Float64=0.05])

Укажите, представляет ли первая оценка «целевой уровень» регрессию или улучшение по сравнению со второй оценкой «базовый уровень».

judge(r::TrialRatio, [time_tolerance::Float64=0.05])
ratio(target::TrialEstimate, baseline::TrialEstimate)

Возвращает отношение целевой оценки к базовой оценке, например, time(target)/time(baseline).

tune!(b::Benchmark, p::Parameters = b.params; verbose::Bool = false, pad = "", kwargs...)

Настройка экземпляра Benchmark.

Если количество вычислений в параметрах p задано вручную, эта функция ничего не делает.

tune!(group::BenchmarkGroup; verbose::Bool = false, pad = "", kwargs...)

Настройка экземпляра BenchmarkGroup. Для большинства тестов tune! необходимо выполнить множество вычислений, чтобы определить правильные параметры для каждого конкретного теста — зачастую больше вычислений, чем выполняется при запуске пробного теста. Фактически, большая часть общего времени тестирования обычно тратится на настройку параметров, а не на сам запуск пробных тестов.

@ballocated expression [other parameters...]

Подобно макросу @allocated, входящему в состав Julia, этот макрос возвращает количество байтов, выделенных при выполнении заданного выражения. Однако он использует макрос @benchmark и принимает все те же дополнительные параметры, что и @benchmark. Возвращаемые значения выделенных памяти соответствуют результатам теста с минимальным затраченным временем, измеренным во время тестирования.

@ballocations expression [other parameters...]

Подобно макросу @allocations, входящему в состав Julia, этот макрос вычисляет выражение, отбрасывая полученное значение, и возвращает общее количество выделений памяти, произведенных во время его выполнения.

В отличие от @allocations, он использует макрос @benchmark из пакета BenchmarkTools и принимает все те же дополнительные параметры, что и @benchmark. Возвращаемое количество выделений памяти соответствует испытанию с минимальным затраченным временем, измеренным во время бенчмарка.

@belapsed expression [other parameters...]

Подобно макросу @elapsed, входящему в состав Julia, этот макрос возвращает прошедшее время (в секундах), необходимое для выполнения заданного выражения. Однако он использует макрос @benchmark и принимает все те же дополнительные параметры, что и @benchmark. Возвращаемое время — это минимальное прошедшее время, измеренное во время теста производительности.

@benchmark <expr to benchmark> [setup=<setup expr>]

Запустите тест производительности для заданного выражения.

Пример

Простейший способ использования этого макроса — поместить его перед тем, что вы хотите протестировать.

julia> @benchmark sin(1)
BenchmarkTools.Trial:
  memory estimate:  0 bytes
  allocs estimate:  0
  --------------
  minimum time:     13.610 ns (0.00% GC)
  median time:      13.622 ns (0.00% GC)
  mean time:        13.638 ns (0.00% GC)
  maximum time:     21.084 ns (0.00% GC)
  --------------
  samples:          10000
  evals/sample:     998

Вы можете интерполировать значения в выражениях @benchmark:

# rand(1000) выполняется для каждой оценки
julia> @benchmark sum(rand(1000))
BenchmarkTools.Trial:
  memory estimate:  7.94 KiB
  allocs estimate:  1
  --------------
  minimum time:     1.566 μs (0.00% GC)
  median time:      2.135 μs (0.00% GC)
  mean time:        3.071 μs (25.06% GC)
  maximum time:     296.818 μs (95.91% GC)
  --------------
  samples:          10000
  evals/sample:     10

# Функция rand(1000) вычисляется во время определения, и полученное значение
# интерполируется в выражение для бенчмарка
julia> @benchmark sum($(rand(1000)))
BenchmarkTools.Trial:
  memory estimate:  0 bytes
  allocs estimate:  0
  --------------
  minimum time:     101.627 ns (0.00% GC)
  median time:      101.909 ns (0.00% GC)
  mean time:        103.834 ns (0.00% GC)
  maximum time:     276.033 ns (0.00% GC)
  --------------
  samples:          10000
  evals/sample:     935
@benchmarkable <expr to benchmark> [setup=<setup expr>]

Создайте экземпляр Benchmark для заданного выражения. @benchmarkable имеет аналогичный синтаксис, как и @benchmark. См. также @benchmark.

@benchmarkset "title" begin ... end

Создайте набор бенчмарков или несколько наборов бенчмарков, если используется цикл for.

!!! danger @benchmarkset устарел. Вместо этого добавьте в group = BenchmarkGroup() с помощью group[key] = @benchmark...

Примеры

@benchmarkset "suite" for k in 1:5
    @case "case $k" rand($k, $k)
end
@bprofile expression [other parameters...]

Запустите @benchmark во время профилирования. Это аналогично

@profile @benchmark expression [other parameters...]

Однако профилирование применяется только к основному выполнению (после компиляции и настройки). Буфер профилирования очищается перед выполнением.

Просмотреть результаты профилирования можно с помощью Profile.print(...). Дополнительную информацию см. в разделе профилирования руководства Julia.

@btime expression [other parameters...]

Подобно макросу @time, входящему в состав Julia, этот макрос выполняет выражение, выводя время его выполнения и выделенную память, прежде чем вернуть значение выражения.

В отличие от @time, он использует макрос @benchmark и принимает все те же дополнительные параметры, что и @benchmark. Выводимое время — это минимальное время, измеренное во время теста производительности.

@btimed expression [other parameters...]

Подобно макросу @timed, входящему в состав Julia, этот макрос выполняет выражение и возвращает NamedTuple, содержащий значение выражения, минимальное затраченное время в секундах, общий объем выделенных байтов, количество выделений памяти и время сборки мусора в секундах во время теста производительности.

В отличие от @timed, он использует макрос @benchmark из пакета BenchmarkTools для более подробных и согласованных измерений производительности. Сообщаемое затраченное время — это минимальное время, измеренное во время теста производительности. Он принимает все дополнительные параметры, поддерживаемые @benchmark.

@case title <expr to benchmark> [setup=<setup expr>]

Пометьте выражение как пример для проверки производительности. Необходимо использовать внутри @benchmarkset.

!!! danger @benchmarkset устарел. Вместо этого добавьте в group = BenchmarkGroup(), используя group[key] = @benchmark...

run(b::Benchmark[, p::Parameters = b.params]; kwargs...)

Выполняет тест производительности, определенный макросом @benchmarkable.

BenchmarkTools.save(filename, args...)

Сохраняет сериализованные объекты тестов производительности (например, результаты или параметры) в файле JSON.

BenchmarkTools.load(filename)

Загружает сериализованные объекты тестов производительности (например, результаты или параметры) из файла JSON.