測定プロトコル
このサイトの数字は、すべて bench/micro-fixed.mjs を同じ機械で実行した結果です。再現できなかったものは公開していません。
方法
- 各ケースは固定の繰り返し回数で、1 サンプルが 1〜500 ms に収まるようにしている
- 1 回の実行で 21 サンプル取り、中央値を使う(平均は使わない)
- 同じケースを独立に 3 回実行し、中央値の変動係数(CV)を計算する
- CV が 10% を超えたら公開しない。倍率も同じ基準で判定する
- 各サンプルの前に GC を 1 回走らせる(
--expose-gc)
測らないもの
- DOM・レイアウト・合成・GPU・フレームレート(別の計測器で試したが再現しなかったため断念)
- メモリ使用量(ヒープ計測をしていない)
- ブラウザ間の差(この計測は Node/V8 の結果)
- 入力規模を変えたときの順位
撤回した結論
計測が再現しなかったため、次の主張は取り下げました。
| 撤回した主張 | 理由 |
|---|---|
| Map.get が普通のオブジェクトより 17% 遅い | 別のケース構成で測ると逆に 5% 速くなり、方向が反転した |
| TypedArray の合計が明確に速い | 差は 6% で、売り文句にできる幅ではないと判断 |
| backdrop-filter が box-shadow より一桁重い | レンダリング計測が同一条件で 60fps↔20fps と反転した |
| box-shadow の blur 半径はコストに影響しない | 同上 |
| will-change に効果はない | 同上 |
環境
Node.js v25.9.0(V8) / 12 論理コア / win32 x64 / 単一プロセス。生データは data/g1.json g2.json g3.json(2026-11-10 の 3 回分)として同梱しています。