Доказательства
Результаты измерений производительности
Проверенные медианы JIT и AOT, исправления масштабирования, регрессии, разброс и исходные данные.
Результаты измерений производительности
Эти числа описывают конкретные нагрузки на одной машине. Меньше — лучше только внутри одной строки; сравнивать разные сценарии между собой нельзя.
Минимальный путь от Command к State
Медиана наносекунд на операцию в полном запуске сценария stable-instructions:
| Система | Медиана JIT | Медиана AOT |
|---|---|---|
| UseCase Forge | 2 633,27 ns | 2 745,19 ns |
| Bloc | 1 127,03 ns | 1 268,10 ns |
| Riverpod | 1 580,76 ns | 388,09 ns |
| MobX | 558,86 ns | 317,53 ns |
| Redux | 662,82 ns | 426,97 ns |
UseCase Forge медленнее в этом минимальном сценарии. Он выполняет допуск, ведёт жизненный цикл Execution, публикует Snapshot, обрабатывает завершение и сохраняет ограниченную историю. Прямое обновление Observable или вызов Reducer не выполняют сопоставимый объём работы. Различие семантики объясняет дополнительную стоимость, но не служит универсальным оправданием производительности.
Масштабирование очередей
В раннем кандидате основного пакета обнаружились непреднамеренные полные проходы по очередям. После оптимизации обработка стандартного набора из 10 000 Command ускорилась с 693,76 мс до 45,72 мс в JIT и с 1 469,83 мс до 33,92 мс в AOT. Следующий этап доработки сократил время сценария планировщика с 5 000 заблокированными последовательными группами с 2 677,953 мс до 2,323 мс в JIT и с 2 205,400 мс до 1,289 мс в AOT.
Это результаты «до и после» для внутренних кандидатов, а не сравнение с другими пакетами.
Зафиксированные регрессии и разброс
- сценарий массовой отмены 5 000 операций в кандидате
hardeningзамедлился на 12,35% в JIT и ускорился на 12,17% в AOT; - JIT-сценарий
rejectNewна 10 000 операций в набореstable-instructionsзаметно изменился и имел коэффициент вариации 13,31%; его AOT-аналог — 19,11%; - последовательные AOT-сценарии на 10 000 и 100 000 операций дали 3 624,21 и 4 034,24 нс/операцию с большим разбросом, чем повторный диагностический запуск критического пути;
- выводы о выделении памяти и влиянии GC не заявляются.
Исходные результаты
| Запуск | JSON | CSV |
|---|---|---|
stable-instructions, JIT | выборки | сводка |
stable-instructions, AOT | выборки | сводка |
hardening, JIT | выборки | сводка |
hardening, AOT | выборки | сводка |
Перед использованием числа в архитектурном решении прочитайте методологию.