Доказательства

Результаты измерений производительности

Проверенные медианы JIT и AOT, исправления масштабирования, регрессии, разброс и исходные данные.

v0.1.0-devПродвинутый уровень

Результаты измерений производительности

Эти числа описывают конкретные нагрузки на одной машине. Меньше — лучше только внутри одной строки; сравнивать разные сценарии между собой нельзя.

Минимальный путь от Command к State

Медиана наносекунд на операцию в полном запуске сценария stable-instructions:

СистемаМедиана JITМедиана AOT
UseCase Forge2 633,27 ns2 745,19 ns
Bloc1 127,03 ns1 268,10 ns
Riverpod1 580,76 ns388,09 ns
MobX558,86 ns317,53 ns
Redux662,82 ns426,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 не заявляются.

Исходные результаты

ЗапускJSONCSV
stable-instructions, JITвыборкисводка
stable-instructions, AOTвыборкисводка
hardening, JITвыборкисводка
hardening, AOTвыборкисводка

Перед использованием числа в архитектурном решении прочитайте методологию.

ARKTELOS

Инженерные системы для программного обеспечения, которое обязано выдерживать нагрузку.