FTS — исполняемые спецификации Производительность FTS: benchmark и влияние на сборку
0%

Производительность FTS: benchmark и влияние на сборку

Производительность FTS: benchmark и влияние на сборку

FTS benchmark разделяет compile, validate, execute, generation, transpilation и examples. Это важно: фраза «компиляция стала медленнее» без разделения этапов не показывает причину.

Baseline Apple M1 Max, Node.js 24.6.0:

Операция 10 100 1000
Compile 0.0511 ms 0.3937 ms 4.3608 ms
Validate 0.0102 ms 0.0883 ms 1.0154 ms
Execute matching rules 0.0010 ms 0.0021 ms 0.0157 ms
Generate TypeScript 0.0065 ms 0.0392 ms 0.3704 ms
Transpile generated TS 1.8410 ms 3.6606 ms 22.9837 ms
Test examples 0.0021 ms 0.0152 ms 0.1611 ms

При масштабе 1000 compile + validate занимает около 5.38 ms на этой машине. 1000 означает синтетические поля/правила, а не «1000 строк любого проекта».

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

transpileModule не включает полный type graph, bundler, плагины, sourcemaps и incremental cache приложения. Поэтому baseline не обещает, что ваш Vite build вырастет ровно на 23 ms.

Application benchmark

  1. Зафиксируйте Node, package lock и режим CPU.
  2. Прогрейте cache одинаково.
  3. Измерьте минимум 20 сборок до интеграции.
  4. Добавьте реальные модели и generation.
  5. Измерьте отдельно clean и incremental build.
  6. Сравнивайте median и p95, а не один запуск.
hyperfine --warmup 3 --runs 20 \
  'npm run build:before' \
  'npm run build:fts'

Как уменьшить цену

  • компилировать модель один раз при старте;
  • генерировать только изменившиеся документы;
  • не включать certificate crypto в browser bundle;
  • использовать browser entrypoint;
  • отделять fts test от hot reload, если моделей много;
  • сохранять benchmark baseline рядом с версией runtime.

Упражнение

Снимите baseline проекта без FTS и с десятью моделями. Запишите версии, команды, median и p95. Если разница меньше шума, так и напишите — отсутствие измеримого ухудшения полезнее маркетингового процента.

Дальше: сквозной проект

Нашли неточность? Выделите фрагмент текста — рядом появится жучок.

Нужен разбор именно вашей ситуации?

Статья описывает общий случай. Если у вас частный — можно разобрать его отдельно, платно. А если не хватает целого материала, предложите тему: её оплачивают вскладчину, и она выходит открытой для всех.

Доска запросов