Skip to content

Latest commit

 

History

History
81 lines (54 loc) · 3.82 KB

File metadata and controls

81 lines (54 loc) · 3.82 KB

Бенчмарки и анализ бандла

В пакете есть два отдельных инструмента:

  • runtime-бенчмарки для ключевых hot path fint-i18n;
  • bundle-analysis для понимания состава собранного dist.

Runtime-бенчмарки

Запуск:

yarn --cwd fint-i18n bench

Что делает команда:

  • запускает benchmark-файлы из bench/**/*.bench.ts через vitest bench;
  • сохраняет машиночитаемый результат в dist/analysis/bench-results.json;
  • печатает в консоль ops/sec по каждому сценарию.

Текущие сценарии в bench/core.bench.ts:

  • cold compile для compileTemplate();
  • steady-state перевод через i18n.t() после прогрева кэша;
  • nested lookup для уже скомпилированного ключа;
  • setLocale() при наличии уже зарегистрированных used blocks.

Что означает вывод в консоли:

  • name — имя benchmark-сценария;
  • hz / ops/sec — сколько операций выполняется в секунду; больше = быстрее;
  • min, max, mean — минимальное, максимальное и среднее время одной операции в миллисекундах; меньше = лучше;
  • p75, p99, p995, p999 — перцентили времени выполнения; показывают не среднее, а насколько дорогими бывают более редкие «хвосты»;
  • rme — относительная погрешность замера; чем меньше, тем стабильнее результат;
  • samples — сколько измерений было собрано для расчёта статистики.

Важно:

  • результаты нужно сравнивать только между запусками на одной машине и примерно в одинаковых условиях;
  • это не microbenchmark всего Node runtime, а прикладные сценарии самого fint-i18n.

Анализ состава бандла

Запуск:

yarn --cwd fint-i18n build:analyze

Что делает команда:

  • собирает библиотеку как обычно;
  • включает rollup-plugin-visualizer только на время анализа;
  • кладёт отчёты в dist/analysis/.

Артефакты:

  • dist/analysis/stats.html — интерактивный treemap;
  • dist/analysis/stats.md — текстовая сводка для чтения и code review;
  • dist/analysis/stats.json — raw-data отчёт для автоматической обработки или сравнения.

Как читать отчёты:

  • stats.html помогает быстро увидеть, какие модули и чанки занимают больше всего места;
  • stats.md удобно использовать в PR или локальном аудите, когда нужен текстовый summary;
  • stats.json полезен для последующего машинного анализа или кастомных скриптов.

Практика использования

Минимальный цикл после изменения рантайма:

yarn --cwd fint-i18n bench
yarn --cwd fint-i18n build:analyze

Это даёт ответ на два разных вопроса:

  • не ухудшился ли hot path по производительности;
  • не вырос ли состав/размер собранного бандла без причины.