Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Бенчмарки

Для измерения производительности ядра используется Criterion. Бенчмарки находятся в crates/light-core/benches/performance.rs и покрывают три ключевых сценария:

  • vdom/diff_1000_elements_10_changes — построение патча для дерева примерно из 1000 элементов при изменении 10 текстовых узлов;
  • layout/flex_1000_elements — раскладка дерева из вложенных flex-контейнеров;
  • render/rects_1000 — отрисовка 1000 прямоугольников в RGBA-буфер 800×600;
  • render/text_100 — отрисовка 100 строк текста системным шрифтом.

Запуск

Все бенчмарки:

cargo bench -p light-fw-core --bench performance

Быстрый прогон с меньшим числом измерений:

cargo bench -p light-fw-core --bench performance -- \
  --warm-up-time 1 --measurement-time 3 --sample-size 20

Только проверка сборки бенчмарков (используется в CI):

cargo bench --no-run

На Windows из-за ограничений файла подкачки добавьте -j 2:

cargo bench --no-run -j 2

HTML-отчёт Criterion сохраняется в target/criterion/.

Результаты

Замеры выполнены 21 октября 2026 года на Intel Core i5-13500 под Windows (x86_64-pc-windows-msvc, rustc 1.99.0). Параметры прогона: 1 секунда прогрева, 3 секунды измерения, 20 выборок.

БенчмаркСреднее времяДоверительный интервал
VDOM diff, 1000 элементов, 10 изменений100.97 µs99.09–102.79 µs
Раскладка flex-дерева из 1000 элементов142.71 µs140.19–145.64 µs
Отрисовка 1000 прямоугольников11.89 ms11.72–12.03 ms
Отрисовка 100 текстовых строк9.42 ms9.26–9.60 ms

Абсолютные значения зависят от CPU, ОС, системного шрифта и фоновой нагрузки. Сравнивать имеет смысл результаты, полученные на одной машине в одинаковых условиях.

Бенчмарк текста использует первый найденный системный шрифт (Segoe UI, DejaVu Sans, Liberation Sans или Arial). Если шрифт не найден, текстовый сценарий пропускается, а остальные бенчмарки выполняются как обычно.

CI

CI не запускает сами замеры, чтобы избежать нестабильности из-за общего окружения. В задаче test выполняется только компиляция бенчмарков через cargo bench --no-run, поэтому поломка API или конфигурации Criterion обнаруживается до релиза.