3

У меня есть две функции; один - асинхронный (testAsync), а один - синхронизация (testSync). Я пытаюсь использовать их с benchmark.js. Какой из них быстрее и насколько. Они должны оба выбросить ошибку.Бенчмаркинг асинхронный и синхронный код, который вызывает ошибку

Я смущен тем, как я должен: а) настроить асинхронный тест; 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

Вы должны указать 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 (в середине секции)

 Смежные вопросы

  • Нет связанных вопросов^_^