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