`startsWith` は正規表現 `/^s1/` より 3.9 倍速い
前方一致の判定は、正規表現を評価するより startsWith のほうが速い。正規表現リテラルをループ外に出しても 3.9 倍の差が残る。
結果
| 回目 | 正規表現 `^s1` | `String.startsWith` | 倍率 |
|---|---|---|---|
| 回目 1 | 3.821 | 0.944 | 4.05× |
| 回目 2 | 3.325 | 0.862 | 3.86× |
| 回目 3 | 3.075 | 0.836 | 3.68× |
測った条件
100,000 個の文字列に対し、接頭辞判定を 1 回ずつ.
この数字が当てはまらない場面
判定パターンが複雑(複数候補・後方一致・境界条件あり)なら正規表現のほうが有利になる。
再現する
cd bench
node --expose-gc micro-fixed.mjs --out ../data/run.json --samples 21 同じ機械で 3 回実行し、median のばらつきが 10% 以内なら同じ結論になります。手元で違う結果が出たら このサイトについて から連絡してください。撤回します。