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.
66 lines
1.0 KiB
66 lines
1.0 KiB
5 years ago
|
'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)
|