В пакете есть два отдельных инструмента:
- runtime-бенчмарки для ключевых hot path
fint-i18n; - bundle-analysis для понимания состава собранного
dist.
Запуск:
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 по производительности;
- не вырос ли состав/размер собранного бандла без причины.