簡単に検証できる証拠を持った答えが最善だと思います。
これらの操作は非常に小さいため、パフォーマンステストを行うことは困難です。
- ==1648真
- === 1629 true
- コントロールテスト1575true
コントロールテストを差し引くと、私のブラウザでは速度に最大30%の違いがあるように見えます。これを複数回行うと、さまざまな答えを得ることができますが、通常、===が最も速く表示されます。これは、違いがどれほど無視できるかを示す証拠にすぎないと思います。
これは、他の人が言っていたことをほぼ証明していると思います。パフォーマンスの違いは考えるのに時間の無駄ですが、===の方が実際には速いことも示しています。うまくいけば、この答えが他の人々、単に証拠を見なければならない人々の時間を節約することができます。
2019アップデート
2019-04-09テストが改善されたFirefox:
- ==1383真
- === 1167 true
- コントロールテスト429true
2019-04-09テストが改善されたChrome:
- == 249 true
- ===248真
- コントロールテスト248true
2019-04-09テストが改善されたエッジ:
- == 22510 true
- === 20315 true
- コントロールテスト4968true
ブラウザは何年にもわたってよりスマートになり、私の元のテストはChromeとFirefoxのクールな最適化にぶつかり、もはや役に立たなくなったようです。テストの最適化をより困難にし、実行回数を増やして、意味のある結果を再度取得しました。 ===は全体的にまだ高速のようです。心配するのはおそらくまだ時間の無駄です。
var testString = "42";
var testString2 = "43";
var testString3 = "42";
var testNumber = 42;
var testNumber2 = 43;
var testNumber3 = 42;
var testObject = {};
var testObject2 = {};
var testObject3 = testObject;
var start = Date.now();
var result = null;
for(var i = 0; i < 200000000; i++){
result =
testString == testString2 || testNumber == testNumber2 || testObject == testObject2 ||
testString == testString2 || testNumber == testNumber2 || testObject == testObject2 ||
testString == testString2 || testNumber == testNumber2 || testObject == testObject2 ||
testString == testString2 || testNumber == testNumber2 || testObject == testObject2 ||
testString == testString2 || testNumber == testNumber2 || testObject == testObject2 ||
testString == testString2 || testNumber == testNumber2 || testObject == testObject2 ||
testString == testString2 || testNumber == testNumber2 || testObject == testObject2 ||
testString == testString2 || testNumber == testNumber2 || testObject == testObject2 ||
testString == testString2 || testNumber == testNumber2 || testObject == testObject2 ||
testString == testString2 || testNumber == testNumber2 || testObject == testObject2 ||
testString == testString3 && testNumber == testNumber3 && testObject == testObject3 &&
testString == testString3 && testNumber == testNumber3 && testObject == testObject3 &&
testString == testString3 && testNumber == testNumber3 && testObject == testObject3 &&
testString == testString3 && testNumber == testNumber3 && testObject == testObject3 &&
testString == testString3 && testNumber == testNumber3 && testObject == testObject3 &&
testString == testString3 && testNumber == testNumber3 && testObject == testObject3 &&
testString == testString3 && testNumber == testNumber3 && testObject == testObject3 &&
testString == testString3 && testNumber == testNumber3 && testObject == testObject3 &&
testString == testString3 && testNumber == testNumber3 && testObject == testObject3 &&
testString == testString3 && testNumber == testNumber3 && testObject == testObject3
}
console.log("==", Date.now() - start, result);
var start = Date.now();
var result = null;
for(var i = 0; i < 200000000; i++){
result =
testString === testString2 || testNumber === testNumber2 || testObject === testObject2 ||
testString === testString2 || testNumber === testNumber2 || testObject === testObject2 ||
testString === testString2 || testNumber === testNumber2 || testObject === testObject2 ||
testString === testString2 || testNumber === testNumber2 || testObject === testObject2 ||
testString === testString2 || testNumber === testNumber2 || testObject === testObject2 ||
testString === testString2 || testNumber === testNumber2 || testObject === testObject2 ||
testString === testString2 || testNumber === testNumber2 || testObject === testObject2 ||
testString === testString2 || testNumber === testNumber2 || testObject === testObject2 ||
testString === testString2 || testNumber === testNumber2 || testObject === testObject2 ||
testString === testString2 || testNumber === testNumber2 || testObject === testObject2 ||
testString === testString3 && testNumber === testNumber3 && testObject === testObject3 &&
testString === testString3 && testNumber === testNumber3 && testObject === testObject3 &&
testString === testString3 && testNumber === testNumber3 && testObject === testObject3 &&
testString === testString3 && testNumber === testNumber3 && testObject === testObject3 &&
testString === testString3 && testNumber === testNumber3 && testObject === testObject3 &&
testString === testString3 && testNumber === testNumber3 && testObject === testObject3 &&
testString === testString3 && testNumber === testNumber3 && testObject === testObject3 &&
testString === testString3 && testNumber === testNumber3 && testObject === testObject3 &&
testString === testString3 && testNumber === testNumber3 && testObject === testObject3 &&
testString === testString3 && testNumber === testNumber3 && testObject === testObject3
}
console.log("===", Date.now() - start, result);
var start = Date.now();
var alwaysTrue = true;
var alwaysFalse = false;
for(var i = 0; i < 200000000; i++){
result =
alwaysFalse || alwaysFalse || alwaysFalse ||
alwaysFalse || alwaysFalse || alwaysFalse ||
alwaysFalse || alwaysFalse || alwaysFalse ||
alwaysFalse || alwaysFalse || alwaysFalse ||
alwaysFalse || alwaysFalse || alwaysFalse ||
alwaysFalse || alwaysFalse || alwaysFalse ||
alwaysFalse || alwaysFalse || alwaysFalse ||
alwaysFalse || alwaysFalse || alwaysFalse ||
alwaysFalse || alwaysFalse || alwaysFalse ||
alwaysFalse || alwaysFalse || alwaysFalse ||
alwaysTrue && alwaysTrue && alwaysTrue &&
alwaysTrue && alwaysTrue && alwaysTrue &&
alwaysTrue && alwaysTrue && alwaysTrue &&
alwaysTrue && alwaysTrue && alwaysTrue &&
alwaysTrue && alwaysTrue && alwaysTrue &&
alwaysTrue && alwaysTrue && alwaysTrue &&
alwaysTrue && alwaysTrue && alwaysTrue &&
alwaysTrue && alwaysTrue && alwaysTrue &&
alwaysTrue && alwaysTrue && alwaysTrue &&
alwaysTrue && alwaysTrue && alwaysTrue
}
console.log("control test", Date.now() - start, result);