ОДНА МОДЕЛЬ. ПЯТЬ РЕНДЕРЕРОВ.
Flutter JSFLUTTER 3.50.0 · DART → JS · CANVASKIT
Тысячи Flutter-виджетов. Та же модель движения, размеры и цвета.
Dart → JavaScript + CanvasKit. Графический движок CanvasKit остаётся Wasm.
ВОСПРОИЗВОДИМЫЕ РЕЗУЛЬТАТЫ
История замеров
| Рендерер | Элементы / режим | FPS rAF | Сцена / с | Кадр p95 | Update p95 | Пропуски | Время |
|---|---|---|---|---|---|---|---|
| Пока нет замеров. Запусти одинаковую нагрузку во всех версиях. | |||||||
Одинаковая работа
Одинаковые seed, координаты, размеры, цвета и счётчики. Обе Flutter-версии используют один исходник: Stack + Transform + Text, setState каждый кадр. Flutter Wasm: Dart Wasm + Skwasm. Flutter JS: Dart JavaScript + CanvasKit (движок Wasm). Также меняется renderer и режим потоков; это не изолированный тест JS против Wasm. Шрифт Flutter — локальный Roboto Mono; DOM использует системный monospace.
rAF и работа сцены
FPS rAF показывает темп callbacks браузера. «Сцена / с» считает завершённые обновления рендерера. Они могут расходиться из-за асинхронного планирования. Не более одного update в полёте; React работает без flushSync.
Одна вкладка за раз
Сохрани размер окна, seed и настройки. Скрытие вкладки или изменение размера прерывает замер. Ни rAF, ни callback рендерера не являются счётчиком физически показанных GPU-кадров. Если все версии держат частоту экрана — увеличь нагрузку.