`+=` で文字列を繋ぐほうが `push + join` より 3.6 倍速い
10,000 個の短い文字列を連結するとき、配列に積んで join('') するより += で繋いだほうが速い。V8 のロープ文字列(cons string)が効いているため。
結果
| 回目 | push + join | `+=` 逐次連結 | 倍率 |
|---|---|---|---|
| 回目 1 | 0.300 | 0.084 | 3.57× |
| 回目 2 | 0.323 | 0.090 | 3.58× |
| 回目 3 | 0.308 | 0.087 | 3.55× |
測った条件
10,000 セグメント('segment-0' … 'segment-9999')を 1 本の文字列に連結.
この数字が当てはまらない場面
数 MB を超える巨大文字列や、連結回数が数回のケースでは差は縮む。ブラウザ間で同じ傾向とは限らない。
再現する
cd bench
node --expose-gc micro-fixed.mjs --out ../data/run.json --samples 21 同じ機械で 3 回実行し、median のばらつきが 10% 以内なら同じ結論になります。手元で違う結果が出たら このサイトについて から連絡してください。撤回します。