benchmark.js 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. // Benchmark
  2. // add 100 items
  3. // toggle them one by one
  4. // then delete them one by one
  5. (function () {
  6. var benchSetting = window.location.search.match(/\bbenchmark=(\d+)/)
  7. if (!benchSetting) return
  8. var itemsToAdd = +benchSetting[1],
  9. now = window.performance && window.performance.now
  10. ? function () { return window.performance.now(); }
  11. : Date.now,
  12. beforeBoot = now(),
  13. render,
  14. bench,
  15. addTime,
  16. toggleTime,
  17. removeTime
  18. setTimeout(function () {
  19. boot = now() - beforeBoot
  20. var start = now(),
  21. last
  22. add()
  23. function add() {
  24. last = now()
  25. var newTodo = '12345'
  26. for (var i = 0; i < itemsToAdd; i++) {
  27. app.newTodo = newTodo
  28. app.addTodo()
  29. }
  30. setTimeout(toggle, 0)
  31. }
  32. function toggle () {
  33. addTime = now() - last
  34. var checkboxes = document.querySelectorAll('.toggle')
  35. //for (var j = 0; j < 5; j++) {
  36. for (var i = 0; i < checkboxes.length; i++) {
  37. checkboxes[i].click()
  38. }
  39. //}
  40. last = now()
  41. setTimeout(remove, 0)
  42. }
  43. function remove () {
  44. toggleTime = now() - last
  45. var deleteButtons = document.querySelectorAll('.destroy');
  46. for (var i = 0; i < deleteButtons.length; i++) {
  47. deleteButtons[i].click()
  48. }
  49. last = now()
  50. setTimeout(report, 0)
  51. }
  52. function report () {
  53. bench = now() - start
  54. removeTime = now() - last
  55. console.log('Benchmark x ' + itemsToAdd)
  56. console.log('boot : ' + boot.toFixed(2) + 'ms')
  57. console.log('add : ' + addTime.toFixed(2) + 'ms')
  58. console.log('toggle : ' + toggleTime.toFixed(2) + 'ms')
  59. console.log('remove : ' + removeTime.toFixed(2) + 'ms')
  60. console.log('total : ' + bench.toFixed(2) + 'ms')
  61. }
  62. }, 0)
  63. })()