FPSLAB

ОДНА МОДЕЛЬ. ЧЕТЫРЕ РЕНДЕРЕРА.

Flutter WasmFLUTTER 3.50.0 · SKWASM

Тысячи Flutter-виджетов. Та же модель движения, размеры и цвета.
Wasm + Skwasm; это графический движок, а не DOM.

ПУТЬ ОБНОВЛЕНИЯrequestAnimationFrame → setState → widgets → SkwasmProduction-сборка · без внешних ресурсовПроверка Dart Wasm и режима Skwasm…
FPS · rAF—Частота экрана: калибровка при запуске
ОБНОВЛЕНИЯ СЦЕНЫ / С—Завершённые обновления; не показанные GPU-кадры
КАДР · P95— ms95% интервалов короче этого значения
ОБНОВЛЕНИЕ · P95— msОт update до Flutter post-frame; без ожидания raster/GPU
ПРОПУЩЕННЫЕ ИНТЕРВАЛЫ— %Оценка интервалов rAF; не число DOM-commits
Загрузка рендерера…
—
Выбери нагрузку и запусти замер2 с прогрева исключены из результата
LIVE FLUTTER SCENE
FPS rAF ВО ВРЕМЯ ПРОГОНА—

ВОСПРОИЗВОДИМЫЕ РЕЗУЛЬТАТЫ

История замеров

РендерерЭлементы / режимFPS rAFСцена / сКадр p95Update p95ПропускиВремя
Пока нет замеров. Запусти одинаковую нагрузку во всех версиях.

01

Одинаковая работа

Одинаковые seed, координаты, размеры, цвета и счётчики. Flutter: Stack + Transform + Text, setState каждый кадр, Skwasm. Native, Jaspr и React: DOM. Шрифт Flutter — локальный Roboto Mono; DOM использует системный monospace. Это сравнение реализаций сцены, не одинаковой DOM-нагрузки.

02

rAF и работа сцены

FPS rAF показывает темп callbacks браузера. «Сцена / с» считает завершённые обновления рендерера. Они могут расходиться из-за асинхронного планирования. Не более одного update в полёте; React работает без flushSync.

03

Одна вкладка за раз

Сохрани размер окна, seed и настройки. Скрытие вкладки или изменение размера прерывает замер. Ни rAF, ни callback рендерера не являются счётчиком физически показанных GPU-кадров. Если все версии держат частоту экрана — увеличь нагрузку.