jsPerf如何工作?

Moh*_*ar 41 javascript performance benchmarking jsperf

今天我参观了jsPerf,现在我想知道......

  1. 什么是"ops/sec"?
  2. 它会做多少次迭代?
  3. 在什么基础上计算哪个更快?这些计算背后的公式是什么?

示例:http://jsperf.com/concatenation-vs-join

有人能告诉我吗?

提前致谢.

Joh*_*ton 118

我写了一些jsPerf使用的Benchmark.js.

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

  2. 重复执行测试,直到达到使测量的百分比不确定性小于或等于所需的最小时间1%.迭代次数将根据环境计时器的分辨率以及测试在最短运行时间内执行的次数而有所不同.我们收集完成的测试运行5数秒(可配置),或至少5运行(也可配置),然后对样本执行统计分析.所以,测试可以重复100,000在时间50 ms (最小运行时间对于大多数环境),然后重复100倍以上(5秒).较大的样本大小(在此示例中100)会导致较小的误差范围.

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

    我们使用了类似于SunSpider使用的welch t检验,但是切换到不成对的双样本t检验以获得相等的方差(方差非常小),因为welch t检验比较较低的ops/sec和更高ops/sec具有小的差异,导致自由度被计算为小于.我们还在具有类似操作/秒的测试中添加了一个容差,因为实际测试表明相同的测试可以从测试到重新测试.T检验用于检查测试之间的差异是否具有统计学意义.15.5%5%

  • 我想你是他的一天:) (5认同)

gbl*_*zex 6

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