数値のソートは文字列ソートより約 1.4 倍遅い
数値のソートでは比較関数の呼び出しが積み上がるため、既定の辞書順ソートより遅い。ただし辞書順は '10' < '9' になるので、数値の並べ替えには使えない。
結果
| 回目 | 数値 10 万件(比較関数あり) | 文字列 10 万件(比較関数なし) | 倍率 |
|---|---|---|---|
| 回目 1 | 61.280 | 44.905 | 1.36× |
| 回目 2 | 61.761 | 45.084 | 1.37× |
| 回目 3 | 61.503 | 45.014 | 1.37× |
測った条件
10 万要素の配列を 5 回ソート(数値側は (a,b)=>a-b、文字列側は既定の辞書順).
この数字が当てはまらない場面
辞書順で困らないデータ(固定幅コードなど)なら既定ソートが速い。数値を正しく並べるには比較関数が必要で、この差はその代償。
再現する
cd bench
node --expose-gc micro-fixed.mjs --out ../data/run.json --samples 21 同じ機械で 3 回実行し、median のばらつきが 10% 以内なら同じ結論になります。手元で違う結果が出たら このサイトについて から連絡してください。撤回します。