`structuredClone` は JSON 往復より約 2.4 倍遅い
深いコピーは JSON 往復のほうが速い。ただし JSON 往復は Date・Map・undefined・循環参照を壊すので、速度だけで選んではいけない。
結果
| 回目 | `structuredClone` | `JSON.parse(JSON.stringify())` | 倍率 |
|---|---|---|---|
| 回目 1 | 9.697 | 3.560 | 2.72× |
| 回目 2 | 9.362 | 3.851 | 2.43× |
| 回目 3 | 8.586 | 3.949 | 2.17× |
測った条件
約 1 MB・4,000 レコードのオブジェクトを深くコピー(JSON 側は同じ文字列を再パース).
この数字が当てはまらない場面
測ったのは速度だけで、メモリ使用量は測っていない。JSON 往復は一時的に大きな文字列を作るため、巨大データではメモリ面で不利になりうる。
再現する
cd bench
node --expose-gc micro-fixed.mjs --out ../data/run.json --samples 21 同じ機械で 3 回実行し、median のばらつきが 10% 以内なら同じ結論になります。手元で違う結果が出たら このサイトについて から連絡してください。撤回します。