jsPerf如何工作?

时间:2011-02-13 19:11:27

标签: javascript performance benchmarking jsperf

今天我访问了jsPerf,现在我想知道......

  1. 什么是“ops / sec”?
  2. 它会进行多少次迭代?
  3. 在什么基础上计算哪个更快?这些计算背后的公式是什么?
  4. 示例:http://jsperf.com/concatenation-vs-join

    谁能告诉我?

    提前致谢。

2 个答案:

答案 0 :(得分:115)

我写了Benchmark.jsjsPerf使用。

  1. ops/sec”代表每秒的操作次数。 这是预计在一秒钟内执行测试的次数。

  2. 重复执行测试,直到达到percentage uncertainty测量小于或等于1%所需的最短时间。迭代次数将根据环境计时器的分辨率以及测试在最短运行时间内执行的次数而有所不同。我们收集5(可配置)的完整测试运行,或者至少5运行(也可配置),然后执行统计分析例子。因此,测试可能会在100,000 (大多数环境的最短运行时间)中重复50 ms次,然后重复1005秒)。较大的样本量(在此示例中为100会导致较小的margin of error

  3. 我们通过考虑误差幅度来决定哪个测试更快,而不仅仅是操作/秒。例如,具有较低操作/秒但较高误差范围的测试可能与具有较高操作/秒和较低误差范围的测试在统计上无法区分

    我们使用welch t-test,类似于SunSpider使用的内容,但切换为unpaired 2-sample t-test以获得相等方差(方差非常小),因为welch t-test在较低的ops / sec和较高的ops / sec与较小的差异进行比较时遇到问题,导致degrees of freedom计算得小于1。我们还在具有类似操作/秒的测试中添加5.5%容差,因为实际测试显示相同的测试可以从测试到重新测试〜5%。 T检验用于检查测试之间的差异是statistically significant

答案 1 :(得分:4)

您可以阅读作者的 Bulletproof JavaScript benchmarks 文章。它使用Benchmark.js btw,它是开源的。