Skip to main content

Module anim_budget

Module anim_budget 

Source
Expand description

アニメーション由来の再レイアウトを、実測コストに応じて間引くための予算判定。

§背景

CSS アニメーションは現状 1 フレームごとに parse_and_layout(HTML 再パース + 全ルール再カスケード)を丸ごと呼んでいる。実サイト規模(2403 ルール)では 1 回あたり数秒〜数十秒かかり、再レイアウトが描画を占有して 「描いた内容が画面に出る前に次のレイアウトが始まる」状態に陥る。

本モジュールは「直近の再レイアウト所要時間」と「前回終了からの経過時間」だけから 今フレームの再レイアウトを飛ばすかを決める純粋関数を提供する。 ハードウェアにもグローバル状態にも依存しないため、単体試験で契約を固定できる。

なお本来の解はアニメ値の差し替えのみで再ペイントする軽量経路であり、 本モジュールはそれが入るまでの緩和策(spec/TODO.md 参照)。

Enums§

BudgetError
予算判定の引数が不正だった場合のエラー。

Constants§

COOLDOWN_FACTOR
高コスト時のクールダウン倍率。所要時間のこの倍数だけ間隔を空ける。 3.0 なら再レイアウトの占有率(デューティ比)は 1/(1+3) = 25% に収まり、 残り 75% を描画と画面転送に回せる。
COST_THRESHOLD_MS
この時間を超える再レイアウトを「高コスト」とみなし、間引き対象にする [ms]。 これ未満なら毎フレーム再レイアウトしてもフレーム時間を食い潰さない。

Functions§

should_skip_relayout
今フレームのアニメーション再レイアウトを飛ばすべきか判定する。