benchmark.js 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. // Benchmark
  2. // add 100 items
  3. // toggle them one by one
  4. // then delete them one by one
  5. // do not run when testing in PhantomJS
  6. if (navigator.userAgent.indexOf('PhantomJS') === -1) {
  7. runBenchmark()
  8. }
  9. function runBenchmark () {
  10. var now = window.performance && window.performance.now
  11. ? function () { return window.performance.now(); }
  12. : Date.now,
  13. beforeRender = now(),
  14. render,
  15. sync,
  16. async
  17. setTimeout(function () {
  18. render = now() - beforeRender
  19. var start = now(),
  20. newTodo = '12345'
  21. for (var i = 0; i < 100; i++) {
  22. app.newTodo = newTodo
  23. app.addTodo()
  24. }
  25. setTimeout(toggle, 0)
  26. function toggle () {
  27. var checkboxes = document.querySelectorAll('.toggle')
  28. for (var i = 0; i < checkboxes.length; i++) {
  29. checkboxes[i].click()
  30. }
  31. setTimeout(del, 0)
  32. }
  33. function del () {
  34. var deleteButtons = document.querySelectorAll('.destroy');
  35. for (var i = 0; i < deleteButtons.length; i++) {
  36. deleteButtons[i].click()
  37. }
  38. report()
  39. }
  40. function report () {
  41. sync = now() - start
  42. setTimeout(function () {
  43. async = now() - start
  44. console.log('render: ' + render.toFixed(2) + 'ms')
  45. console.log('sync: ' + sync.toFixed(2) + 'ms')
  46. console.log('async: ' + async.toFixed(2) + 'ms')
  47. }, 0)
  48. }
  49. }, 0)
  50. }