You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

65 lines
1.0 KiB

'use strict'
var bench = require('fastbench')
var retimer = require('./')
var max = 10000
function benchSetTimeout (done) {
var timers = new Array(max)
var completed = 0
var toReschedule = 20
schedule()
function complete () {
if (++completed === max) {
done()
}
}
function schedule () {
for (var i = 0; i < max; i++) {
if (timers[i]) {
clearTimeout(timers[i])
}
timers[i] = setTimeout(complete, 50)
}
if (--toReschedule > 0) {
setTimeout(schedule, 10)
}
}
}
function benchRetimer (done) {
var timers = new Array(max)
var completed = 0
var toReschedule = 20
schedule()
function complete () {
if (++completed === max) {
done()
}
}
function schedule () {
for (var i = 0; i < max; i++) {
if (timers[i]) {
timers[i].reschedule(50)
} else {
timers[i] = retimer(complete, 50)
}
}
if (--toReschedule > 0) {
setTimeout(schedule, 10)
}
}
}
var run = bench([
benchSetTimeout,
benchRetimer
], 100)
run(run)