`toFixed` は `Intl.NumberFormat` より約 1.6 倍遅い
同じインスタンスを使い回すなら、Intl.NumberFormat のほうが toFixed より速い。ロケール対応の書式が欲しいなら速度面の妥協は不要。
結果
| 回目 | `Number.toFixed(2)` | `Intl.NumberFormat`(小数 2 桁・キャッシュ済み) | 倍率 |
|---|---|---|---|
| 回目 1 | 19.985 | 13.241 | 1.51× |
| 回目 2 | 24.678 | 14.382 | 1.72× |
| 回目 3 | 22.536 | 13.960 | 1.61× |
測った条件
100 万回の小数整形(Intl のインスタンスはループ外で 1 回だけ生成).
この数字が当てはまらない場面
Intl のインスタンスを毎回生成すると逆転する。桁区切りや通貨記号が必要ないなら toFixed でも十分。
再現する
cd bench
node --expose-gc micro-fixed.mjs --out ../data/run.json --samples 21 同じ機械で 3 回実行し、median のばらつきが 10% 以内なら同じ結論になります。手元で違う結果が出たら このサイトについて から連絡してください。撤回します。