2014-11-06 3 views
4

Я новичок в использовании benchmark.js, документация немного раздражает и не может найти много примеров, может ли кто-нибудь подтвердить, действительно ли мой код, извините я не могу разделить весь код (политика компании).Как добавить настройку и отключение для каждого теста в benchmark.js

считаю setText(choice); как некоторая операция, и я хочу сравнить различные варианты. (функция работает нормально независимо, я проверил ее). Хотя я настраиваю функцию настройки и разрыва, я не уверен, что настройка правильная, я хочу, чтобы они запускались до и после каждого отдельного прогона setText(choice);

с использованием console.log, я обнаружил, что они запускаются только один раз каждые 200 раз setText(choice);, я хочу, чтобы они работали каждый раз.

также, как я могу получить ops/sec для каждого периода после завершения набора. Вы можете найти соответствующий код, относящийся к эталонному набору.

var suite = new Benchmark.Suite; 
suite.add('innerText', function() { 
    setText('innerText'); 
}, {'setup':setup,'teardown':teardown}) 
.add('innerHTML', function() { 
    setText('innerHTML'); 
}, {'setup':setup,'teardown':teardown}) 
.add('textContent', function() { 
    setText('textContent'); 
}, {'setup':setup,'teardown':teardown}) 
.on('cycle', function(event, bench) { 
    log(String(bench)); 
}).on('complete', function() { 
    log('Fastest is ' + JSON.stringify(this)); 
}).run(false); 

ответ

3

Я также новичок в benchmarkjs и надеюсь, что смогу правильно ответить.

http://monsur.hossa.in/2012/12/11/benchmarkjs.html

Если вы читали выше статью, вы узнаете, ориентир будет идти на этапе анализа и отбора проб.

Он будет запускать ряд итераций (т. Е. «Тестовый цикл»), который сделал setText во время фазы выборки без вызова setup или teardown.

Так что, я думаю, что настройка и отрыв - это только то, что вы делаете перед входом в тестовый цикл и не совсем для каждого теста. Вы не можете получить более детальные, чем тест-петля

Вы можете получить менее зернистое, чем тест-цикл; вы можете прослушивать события на всем Benchmark (vs на уровне уровня пакета или уровне тестовой петли). Второй вопрос о каждой операции по завершению комплектации, вы можете получить ее из полного события

.on('complete', function(event) { 
    //will log out the array of benchmark.suite, you can get it from each benchmark suite. 
    //e.g event.currentTarget[0].hz which retrieve the operation/s. for the first one. 
    console.log(event.currentTarget); 
    //equivalent of above; event.currentTarget===this; both are Benchmark.suite. 
    console.log(this); 
}) 
Смежные вопросы