我试图找到一个更快的== or ===
我对答案不感兴趣,我想知道如何测试。

我创建了一个要测量的代码,但是两者之间的差异是如此之近,所以我无法证明答案。

我更改了CPU速度,然后运行此代码。但是每次都显示出不同的价值。仍然不确定哪一个更快。

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]) { }
    }
}


javascript - 如何比较两个相似代码的性能?-LMLPHP

最佳答案

要找出是否存在显着差异(在这种情况下,没有¹),如果有,那么更快(在这种情况下,两者都没有),则需要更多的迭代,并且需要进行更多的测试。当测量非常非常小的物体时,您需要大量数据才能使信号上升到高于噪声的水平。

确保关闭您可以在计算机上关闭的所有后台进程,然后对每个版本的代码运行数千次迭代,在每个迭代之间交替进行。

我还建议测试不是特殊情况的东西。比较中的NaN是一种特殊情况:比较始终为假。因此,我将测试NaN3以外的其他数字,而不是针对3测试3

有专门为您执行此操作的工具。 jsPerf.com是最著名的之一。 Here's a test I did there。但是,即使jsPerf都专注于在合理的时间段(不到一分钟)内获得结果,而正确的测试以检测到很小的差异可能长达数分钟甚至数小时。

但是:=====之间的任何差异都将很小,根本没有必要进行测试。几乎可以肯定,您有更大的鱼可以油炸。



¹为什么没有区别?因为您要比较的两件事都是number,所以比较的作用完全相同。您可能已经听说过=====更快的说法是基于==强制将不同类型的操作数转换为普通类型这一事实。当不需要强制/转换时,=====做完全相同的事情。

关于javascript - 如何比较两个相似代码的性能?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53667726/

10-12 12:25
查看更多