javascript - 对抛出错误的异步代码和同步代码进行基准测试

标签 javascript node.js asynchronous error-handling benchmark.js

我有两个功能;一种是异步 (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 });

最佳答案

您应该指定 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);
  }
})
...

Check benchmark.js 站点上的示例(在部分中间)

关于javascript - 对抛出错误的异步代码和同步代码进行基准测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36535671/

相关文章:

node.js - 在 Openshift(nodejs 应用程序)中使用目录(用于图像链接等)

javascript - 与 promise 中的 .then() 混淆

c++ - 如何验证条件变量是否已初始化?

javascript - jquery隐藏具有CSS过渡效果的div

javascript - Jquery脚本没有在函数内部运行

javascript - 为传单多层控件添加不同的标题

node.js - 如何永远关闭(nodejs)注销

javascript - 在分页 ScrollView 中 react native 灵活的 View 大小

php - cURL 有时会为有效的 URL 返回空白字符串

javascript - Spec 没有期望 - Jasmine 测试回调函数