Как добавить настройки и демонтаж для каждого теста в benchmark.js
Я новичок в использовании benchmark.js, документация немного раздражает, и я не могу найти много примеров, может кто-нибудь подтвердить, если мой код правильный, извините, я не могу поделиться всем кодом (политика компании).
рассматривать setText(choice);
как некоторые операции, и я хочу сравнить различные варианты. (функция отлично работает независимо, я проверил это). Хотя я настраиваю функцию настройки и удаления, я не уверен, что настройка верна, я хочу, чтобы они запускались до и после каждого запуска setText(choice);
с помощью console.log
Я обнаружил, что они запускаются только один раз на каждые 200 раз setText(choice);
Я хочу, чтобы они работали каждый раз.
Кроме того, как я могу получить операции / сек для каждой операции по завершении набора. Вы можете найти код, связанный с моим набором тестов, ниже.
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);
1 ответ
Я также новичок в benchmarkjs и надеюсь, что смогу ответить правильно.
http://monsur.hossa.in/2012/12/11/benchmarkjs.html
Если вы прочитаете вышеупомянутую статью, вы обнаружите, что эталонный тест войдет в фазу анализа и отбора проб.
Он будет выполнять несколько итераций (то есть "тестовый цикл"), которые выполняли setText на этапе выборки без вызова setup
или же teardown
,
Таким образом, я предполагаю, что настройка и разборка - это то, что вы делаете перед входом в тестовый цикл, а не точно для каждого теста. Вы не можете получить более детальный, чем тестовый цикл
Вы можете получить менее детальный, чем тестовый цикл; вы можете прослушивать события всего Benchmark (против уровня набора или уровня цикла тестирования). Второй вопрос о каждой операции по завершению комплекта, вы можете получить его по завершению события
.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);
})