bench.js 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. 'use strict'
  2. /* eslint-disable no-var */
  3. const bench = require('fastbench')
  4. const retimer = require('./')
  5. const max = 10000
  6. function benchSetTimeout (done) {
  7. const timers = new Array(max)
  8. let completed = 0
  9. let toReschedule = 20
  10. schedule()
  11. function complete () {
  12. if (++completed === max) {
  13. done()
  14. }
  15. }
  16. function schedule () {
  17. for (var i = 0; i < max; i++) {
  18. if (timers[i]) {
  19. clearTimeout(timers[i])
  20. }
  21. timers[i] = setTimeout(complete, 50)
  22. }
  23. if (--toReschedule > 0) {
  24. setTimeout(schedule, 10)
  25. }
  26. }
  27. }
  28. function benchRetimer (done) {
  29. const timers = new Array(max)
  30. let completed = 0
  31. let toReschedule = 20
  32. schedule()
  33. function complete () {
  34. if (++completed === max) {
  35. done()
  36. }
  37. }
  38. function schedule () {
  39. for (var i = 0; i < max; i++) {
  40. if (timers[i]) {
  41. timers[i].reschedule(50)
  42. } else {
  43. timers[i] = retimer(complete, 50)
  44. }
  45. }
  46. if (--toReschedule > 0) {
  47. setTimeout(schedule, 10)
  48. }
  49. }
  50. }
  51. const run = bench([
  52. benchSetTimeout,
  53. benchRetimer
  54. ], 100)
  55. run(run)