[Замеряем производительность с помощью BenchmarkDotNet](https://habr.com/ru/articles/277177/) BenchmarkDotNet запускает тестируемые методы последовательно. Это делается для того, чтобы исключить влияние параллельного выполнения на результаты тестирования, что позволяет получить более точные и чистые данные о производительности. <br> ### Описание лога, что выводится в консоль <br> Число op обозначает количество операций, а ns - время замера в наносекундах, us/op - среднее время одной операции в микросекундах. <br> **OverheadJitting:** Этот этап связан с "прогревом" Just-In-Time компилятора (JIT) для части кода, которая измеряет накладные расходы на бенчмаркинг. Ваш код выполняется несколько раз, чтобы JIT мог оптимизировать его. Таким образом, JIT компиляция не вносит искажения в результаты измерений. **WorkloadJitting**: Аналогично OverheadJitting, но для самого тестируемого кода. <br> **WorkloadPilot**: Это этап, на котором библиотека пытается определить оптимальное количество итераций для каждого замера в основной фазе бенчмарка (WorkloadActual). Это делается для того, чтобы бенчмарк был достаточно долгим для точного измерения, но не слишком долгим. Библиотека пытается найти баланс, выполняя этот пилотный этап с различным количеством итераций (op). <br> **OverheadWarmup**: Это стадия "прогрева" (Warmup), которая предшествует основному замеру времени выполнения кода (с учетом накладных расходов Overhead). На этом этапе код выполняется несколько раз, чтобы кэши процессора были заполнены, а компилятор JIT (Just-In-Time) смог выполнить все возможные оптимизации. Число op обозначает количество операций, ns - общее время выполнения в наносекундах, ns/op - среднее время выполнения одной операции в наносекундах. <br> **OverheadActual**: Это основной этап измерения, на котором измеряется время выполнения кода (с учетом накладных расходов Overhead). Эти измерения будут использованы для вычета из результатов работы основного кода, чтобы получить наиболее точные данные о производительности. <br> **WorkloadWarmup**: Это стадия "прогрева" (Warmup) для основного кода вашего бенчмарка (Workload). На этом этапе код выполняется несколько раз, чтобы кэши процессора были заполнены, а компилятор JIT смог выполнить все возможные оптимизации перед основным измерением. Число op обозначает количество операций, ns - общее время выполнения в наносекундах, ns/op - среднее время выполнения одной операции в наносекундах. <br> **BeforeActualRun**: Это маркер, который отражает начало основной фазы измерения (Actual Run). <br> **WorkloadActual**: Это основной этап измерения, на котором измеряется время выполнения вашего кода. Эти измерения будут использованы для финального вычисления результатов производительности.