比较异步与同步代码在抛出错误时的基准测试

4
我有两个函数,一个是异步的(testAsync),另一个是同步的(testSync)。我想使用benchmark.js来测试它们的速度差异。它们都应该抛出一个错误。
我不确定如何:a)设置一个异步测试;b)确保每个函数的测试都会抛出一个错误。
以下是我的代码:
import Benchmark from 'benchmark'
var suite = new Benchmark.Suite;

// add tests
suite.add('query validation test sync', function(deferred) {
  try {
    testSync({'name': 'reggi'});
  } catch (e) {
    deferred.resolve();
  }
})
.add('query validation test async', function(deferred) {
  testAsync({'name': 'reggi'}, {})
    .then(deferred.resolve)
    .catch(deferred.resolve);
})
// add listeners
.on('cycle', function(event) {
  console.log(String(event.target));
})
.on('error', function(event) {
  console.log(String(event.target));
})
.on('complete', function() {
  console.log('Fastest is ' + this.filter('fastest').map('name'));
})
// run async
.run({ 'async': true });
1个回答

1

您应该在测试函数中指定defer: true作为选项:

suite.add('query validation test sync', function() {
  try {
    testSync({'name': 'reggi'});
  } catch (e) {
    // it's sync code, you don't need use defer here
  }
})
.add('query validation test async', {
  defer: true,
  fn: function(deferred) {
    testAsync({'name': 'reggi'}, {})
      .then(deferred.resolve)
      .catch(deferred.resolve);
  }
})
...

点击此处查看在 benchmark.js 网站上的示例(位于中间部分)


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