JSベンチ実測MEASURED, NOT RECALLED

    ↑↓ で選択、Enter で開く。Esc で閉じる。

    ホーム / 計測結果

    `Array.includes` は `Set.has` より約 28 倍遅い

    存在判定を繰り返すなら、配列を Set に変換したほうがよい。20 万回で 28 倍の差が出る。

    結果

    回目`Array.includes`(10 万要素)`Set.has`(同内容)倍率
    回目 1462.04015.70029.43×
    回目 2446.24214.83330.08×
    回目 3460.71417.79725.89×

    中央値のばらつき: `Array.includes`(10 万要素) CV 1.6% / `Set.has`(同内容) CV 7.7% / 倍率 CV 6.5%(3 回の実行から算出)

    測った条件

    1,000 種の文字列集合に対し、20 万回の存在判定.

    この数字が当てはまらない場面

    判定回数が数十回程度なら、Set を作るコストのほうが大きい。一度きりの判定では配列のままでよい。

    再現する

    cd bench
    node --expose-gc micro-fixed.mjs --out ../data/run.json --samples 21

    同じ機械で 3 回実行し、median のばらつきが 10% 以内なら同じ結論になります。手元で違う結果が出たら このサイトについて から連絡してください。撤回します。