如何在学术范围内正确地对 JavaScript 代码进行基准测试?

3

我目前正在写一篇论文,内容涉及代码的优化。在我的例子中,我将讨论如何在JavaScript中区分两个数组。比较ES5筛选器和嵌套for循环。

使用jsPerf.com进行的测试结果符合预期。ES5筛选器比嵌套for循环慢89-90%。使用performance.now()也可以得到类似的结果(启动计时器,运行代码,停止计时器并计算所需时间)。

所有这些都非常适用于基准测试代码。但是,它们在学术上并不正确。第一个测试结束后,如果我运行100%的CPU密集型基准测试会发生什么?那么第二个测试结果就“无效”了。

什么是测量两个JavaScript代码片段性能的最佳方法,正确的方法?


@robertklep 我已经阅读了所有的问题和担忧,但是如果我说“我运行了这段代码一百万次并取得了平均时间”,那么我会受到批评。这不是正确的做法。如果我在100%的CPU使用率下运行基准测试,结果将会有所不同。 - MortenMoulder
@robertklep 嗯,我不确定如何将其与此基准相结合。我想知道正确的做法是什么,因为我认识一些优化学士,他们因为“错误”的方法(不符合学术规范)而受到了批评。 - MortenMoulder
也许总是依赖于最慢的支持浏览器和中等硬件配置,始终设定设计门槛并调整代码以满足这些要求? - VadimB
@VadimB 在其他平台和浏览器上运行并不是问题所在。问题在于确保结果有效。 - MortenMoulder
好的 - 没问题。正如我所说,我正在清理我的代码,因为你还没有发布任何内容,所以我无法确定你的代码效率如何。 - Jaromanda X
显示剩余17条评论
1个回答

0

我找到了答案。使用Google Chrome的Profiler,我能够获取我的函数的CPU时间。

使用分析器似乎是最好的方法,因为它实际上使用CPU时间而不是实际时间。结果不应受影响,即使我的CPU在其中一个测试中运行时达到100%。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接