首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >定义循环数- Benchmark.js

定义循环数- Benchmark.js
EN

Stack Overflow用户
提问于 2015-09-17 11:57:51
回答 3查看 2.3K关注 0票数 16

我正在尝试使用Benchmark.js执行一个示例性能基准测试。以下是我所写的:

代码语言:javascript
复制
var Benchmark = require('benchmark');
var arr = []
benchmark = new Benchmark('testPerf',function(){
    arr.push(1000);
},
{
    delay: 0,
    initCount: 1,
    minSamples: 1000,
    onComplete : function(){ console.log(this);},
    onCycle: function(){}
});
benchmark.run();

现在就像我们在JUnitBenchmarks中所做的那样:

代码语言:javascript
复制
@BenchmarkOptions(clock = Clock.NANO_TIME, callgc = true, benchmarkRounds = 10, warmupRounds = 1)

在这里,我还想在基准测试in中声明benchmarkRoundswarmupRounds计数。我认为warmupRounds映射到initCount?以及如何设置确切的循环/基准迭代次数?

或者,如果我们有一些其他好的JavaScript库可以处理它,也可以工作。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-10-01 07:21:04

在JavaScript基准测试中使用固定的迭代计数是危险的:我们最终可能会得到零时间的结果,因为浏览器变得更快。

Benchmark.js不允许预先设置循环/迭代次数。相反,它一遍又一遍地运行测试,直到结果被认为是合理准确的。你应该看看的代码读取。这篇文章的一些要点:

  • Benchmark.js中的循环由实际测试的设置、拆卸和多次迭代组成。
  • Benchmark.js从分析阶段开始:运行几个循环以找到最佳的迭代次数(尽可能快地完成测试,同时收集足够的样本以生成准确的结果)。
  • 在分析期间运行的周期数保存在Benchmark.prototype.cycles中。
  • Benchmark.js知道最优的迭代次数,开始采样阶段:运行测试并实际存储结果。
  • Benchmark.prototype.stats.sample是采样过程中每个周期的结果数组。
  • Benchmark.prototype.count是抽样期间的迭代次数。
票数 8
EN

Stack Overflow用户

发布于 2015-09-30 00:02:53

查看文档:

http://benchmarkjs.com/docs

听起来你是对的

  1. warmupRounds => initCount (initCount)
  2. 循环=> 周期
票数 5
EN

Stack Overflow用户

发布于 2016-05-12 14:32:29

不管这是否一个好主意,如果您将minTimemaxTime设置为一些负值,那么minSamplesinitCount将被保留为唯一的条件,它们将对应于在每个周期运行的#循环和热身迭代。因此,测试函数将执行(initCount+1) * minSamples次数。至少我的实验证明了这一点。

代码语言:javascript
复制
var Benchmark = require('benchmark');
var counter = 0;
Benchmark('counting', {
  'fn': function() { ++counter; },
  minSamples: 3,
  initCount: 1,
  minTime: -Infinity,
  maxTime: -Infinity,
  onCycle: function () { console.log('[onCycle] counter: ' + counter); },
  onComplete : function(){ console.log('mean: ' + this.stats.mean);},
}).run();

让我使用benchmark.js 2.1.0:

代码语言:javascript
复制
$ node count.js
[onCycle] counter: 2
[onCycle] counter: 4
[onCycle] counter: 6
mean: 0.0000034683333333333333
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32629779

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档