🕵️♀️
厳密等価演算子 と 等価演算子、どちらがパフォーマンス的に優れているか。 (JavaScript)
厳密等価演算子と等価演算子の違いについては こちらの記事をご参照ください。
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 (min … max) p75 p99 (min … top 1%)
-------------------------------------- -------------------------------
Strict Equal 306.05 ps/iter 292.97 ps █
(268.55 ps … 163.45 ns) 537.11 ps ▂▁█▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
Loose Equal 60.84 ns/iter 61.23 ns █▅
(56.62 ns … 113.77 ns) 76.25 ns ▁▃▆███▃▂▂▁▁▁▁▁▁▁▁▁▁▁▁
Discussion