Skip to content

Commit

Permalink
benchmark: add more thorough timers benchmarks
Browse files Browse the repository at this point in the history
Refs: #9493
PR-URL: #10925
Reviewed-By: James M Snell <[email protected]>
Reviewed-By: Trevor Norris <[email protected]>
  • Loading branch information
Fishrock123 committed Jan 27, 2017
1 parent b19334e commit c74e6fe
Show file tree
Hide file tree
Showing 5 changed files with 126 additions and 0 deletions.
32 changes: 32 additions & 0 deletions benchmark/timers/timers-cancel-pooled.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
'use strict';
var common = require('../common.js');
var assert = require('assert');

var bench = common.createBenchmark(main, {
thousands: [500],
});

function main(conf) {
var iterations = +conf.thousands * 1e3;

var timer = setTimeout(() => {}, 1);
for (var i = 0; i < iterations; i++) {
setTimeout(cb, 1);
}
var next = timer._idlePrev;
clearTimeout(timer);

bench.start();

for (var j = 0; j < iterations; j++) {
timer = next;
next = timer._idlePrev;
clearTimeout(timer);
}

bench.end(iterations / 1e3);
}

function cb() {
assert(false, 'Timer should not call callback');
}
26 changes: 26 additions & 0 deletions benchmark/timers/timers-cancel-unpooled.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
'use strict';
var common = require('../common.js');
var assert = require('assert');

var bench = common.createBenchmark(main, {
thousands: [100],
});

function main(conf) {
var iterations = +conf.thousands * 1e3;

var timersList = [];
for (var i = 0; i < iterations; i++) {
timersList.push(setTimeout(cb, i + 1));
}

bench.start();
for (var j = 0; j < iterations + 1; j++) {
clearTimeout(timersList[j]);
}
bench.end(iterations / 1e3);
}

function cb() {
assert(false, 'Timer ' + this._idleTimeout + ' should not call callback');
}
18 changes: 18 additions & 0 deletions benchmark/timers/timers-insert-pooled.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
'use strict';
var common = require('../common.js');

var bench = common.createBenchmark(main, {
thousands: [500],
});

function main(conf) {
var iterations = +conf.thousands * 1e3;

bench.start();

for (var i = 0; i < iterations; i++) {
setTimeout(() => {}, 1);
}

bench.end(iterations / 1e3);
}
27 changes: 27 additions & 0 deletions benchmark/timers/timers-insert-unpooled.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
'use strict';
var common = require('../common.js');
var assert = require('assert');

var bench = common.createBenchmark(main, {
thousands: [100],
});

function main(conf) {
var iterations = +conf.thousands * 1e3;

var timersList = [];

bench.start();
for (var i = 0; i < iterations; i++) {
timersList.push(setTimeout(cb, i + 1));
}
bench.end(iterations / 1e3);

for (var j = 0; j < iterations + 1; j++) {
clearTimeout(timersList[j]);
}
}

function cb() {
assert(false, 'Timer ' + this._idleTimeout + ' should not call callback');
}
23 changes: 23 additions & 0 deletions benchmark/timers/timers-timeout-pooled.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
'use strict';
var common = require('../common.js');

var bench = common.createBenchmark(main, {
thousands: [500],
});

function main(conf) {
var iterations = +conf.thousands * 1e3;
var count = 0;

for (var i = 0; i < iterations; i++) {
setTimeout(cb, 1);
}

bench.start();

function cb() {
count++;
if (count === iterations)
bench.end(iterations / 1e3);
}
}

0 comments on commit c74e6fe

Please sign in to comment.