🕵️‍♀️

厳密等価演算子 と 等価演算子、どちらがパフォーマンス的に優れているか。 (JavaScript)

2023/09/14に公開

厳密等価演算子と等価演算子の違いについては こちらの記事をご参照ください。

TypeScript Playground上でテストします。
またタイムの計測にはperformance.now()を使用します。(TypeScriptの警告は無視します。)

以下の三つの変数を用意します。これらを比べます。

const a = 1;
const b = "1";
const c = "zenn";

試行回数は10000回 ~ 100000回とします。数回行い、その平均を結果とします。

  const a = 1;
  const b = "1";
  const c = "zenn";


  const range = Array(r).fill("0");

  const before = performance.now();

  for ( const i of range ) {
    if (a == b) {}
    if (a == c) {}
    if (b == c) {}
  }

  const after = performance.now();
  return after - before;
試行回数 普通 厳格
10,000 0.2419999998807907 0.24400000002235175
100,000 2.593999999798834 2.796000000089407

なんと普通の方が早いと言う結果になりました。
キャストの都合分 普通の速度の方が遅いと思っていたので驚きです。

追記

mitataでベンチマーク取ったら == の方が五倍高速でした。

runtime: bun 1.1.34 (x64-win32)

benchmark              avg (minmax) p75   p99    (mintop 1%)
-------------------------------------- -------------------------------
Strict Equal            306.05 ps/iter 292.97 ps(268.55 ps163.45 ns) 537.11 ps ▂▁█▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
Loose Equal              60.84 ns/iter  61.23 ns    █▅
                (56.62 ns113.77 ns)  76.25 ns ▁▃▆███▃▂▂▁▁▁▁▁▁▁▁▁▁▁▁

Discussion