我试图找到一个更快的方法,== 或===
。
我对答案不感兴趣,我想知道如何测试它。
我创建了一个代码来测量,但两者之间的差异非常接近,所以我无法证明答案。
我更改了 CPU 速度,并运行此代码。但每次都显示出不同的值(value)。仍不确定哪一个更快。
let B = new Array(1000000).fill(3);
console.time("teste 2 ");
test2(B);
console.timeEnd("teste 2 ");
console.time("teste 3 ");
test3(B);
console.timeEnd("teste 3 ");
function test2(B) {
for (i in B) {
if (NaN == B[i]) { }
}
}
function test3(B) {
for (i in B) {
if (NaN === B[i]) { }
}
}
最佳答案
要找出是否存在任何显着差异(在本例中没有显着差异),如果有,哪种更快(在本例中两者都没有),您需要更多迭代,以及更多的测试运行。当测量非常非常小的东西时,您需要大量数据才能使信号高于噪声。
确保您可以在计算机上关闭的所有后台进程都已关闭,然后对每个版本的代码运行数千次迭代,在它们之间交替运行。
我还建议测试一些不是特殊情况的东西。比较中的 NaN
是一种特殊情况:比较始终为 false。因此,我不会针对 3
测试 NaN
,而是测试 3
和 3
以外的一些数字。
有一些工具可以帮助您执行此操作。最著名的网站之一是 jsPerf.com。 Here's a test I did there 。但即使 jsPerf 也专注于在合理的时间段(不到一分钟)内获得结果,而检测非常小的差异的适当测试很可能需要几分钟甚至几小时。
但是:==
和 ===
之间的任何差异都非常小,没有任何差异完全测试它的点。几乎肯定你还有更大的鱼要煎。
为何没有区别?因为您要比较的两个东西都是 number
,所以比较的作用完全相同。您可能听说过 ===
比 ==
更快的说法根源于 ==
强制/转换不同的操作数类型转换为通用类型。当不需要强制/转换时,==
和 ===
会做完全相同的事情。
关于javascript - 如何比较两段相似代码的性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53667726/