我正在使用一个版本的Benchmark JS作为节点,我找不到任何关于如何读取结果的信息。
首先,有没有一个地方详细说明您可以从 Benchmark JS 中提取的所有数据?
其次,我目前在我的控制台中得到以下结果:
Test x 2,276,094 ops/sec ±0.84% (190 runs sampled)
所有这些信息意味着什么?
测试:我的测试名称,我知道那个
x 2,276,094 ops/sec:我假设这是代码理论上可以在一秒钟内运行的平均次数?
±0.84%:不知道
190 次运行采样:基准测试运行代码以获得结果的次数是多少?
你的问题可能不是重复的,但有趣的是,答案正如GolezTroi在评论中指出的那样。
如果这个问题被删除(极不可能(,以下是约翰-大卫道尔顿的回答全文:
我写了 Benchmark.js,jsPerf 使用它。
"
ops/sec
"代表每秒操作数。这是测试预计在一秒钟内执行的次数。重复执行测试,直到达到获得小于或等于
1%
的测量不确定度百分比所需的最短时间。迭代次数将根据环境计时器的分辨率以及测试在最短运行时间内可以执行的次数而有所不同。我们收集完成的测试运行5
秒(可配置(或至少5
运行(也可配置(,然后对样品进行统计分析。因此,测试可能会在50 ms
(大多数环境的最短运行时间(中重复100,000
次,然后重复100
次(5
秒(。样本量越大(在本例中为100
个(,误差幅度越小。我们决定哪个测试更快不仅仅是通过考虑误差幅度来决定操作/秒。例如,具有较低操作/秒但较大边际误差的测试在统计上可能与具有较高操作/秒和较低边际误差的测试无法区分。
我们使用韦尔奇 t 检验,类似于 SunSpider 使用的,但切换到未配对的 2 样本 t 检验以获得相等方差(方差极小(,因为韦尔奇 t 检验在比较较低的 ops/sec 和较高的 ops/sec 时存在问题,方差很小,导致自由度被计算为小于
1
。我们还在具有相似操作/秒的测试上增加了5.5%
余量,因为实际测试表明,相同的测试可以从测试到重新测试摆动~5%
。T 检验用于检查检验之间的差异在统计意义上是否显著。