github.com/insionng/yougam@v0.0.0-20170714101924-2bc18d833463/public/libs/vue-1.0.24/examples/todomvc/perf.js (about)

     1  setTimeout(function () {
     2  
     3    if (window.isPhantom) return
     4    
     5    // Initial load & render metrics
     6  
     7    metrics.afterRenderAsync = now()
     8    console.log('Vue load     : ' + (metrics.afterLoad - metrics.beforeLoad).toFixed(2) + 'ms')
     9    console.log('Render sync  : ' + (metrics.afterRender - metrics.beforeRender).toFixed(2) + 'ms')
    10    console.log('Render async : ' + (metrics.afterRenderAsync - metrics.beforeRender).toFixed(2) + 'ms')
    11    console.log('Total sync   : ' + (metrics.afterRender - metrics.beforeLoad).toFixed(2) + 'ms')
    12    console.log('Total async  : ' + (metrics.afterRenderAsync - metrics.beforeLoad).toFixed(2) + 'ms')
    13  
    14    // Benchmark
    15    // add 100 items
    16    // toggle them one by one
    17    // then delete them one by one
    18  
    19    var benchSetting = window.location.search.match(/\bbenchmark=(\d+)/)
    20    if (!benchSetting) return
    21  
    22    var itemsToAdd = +benchSetting[1],
    23      render,
    24      bench,
    25      addTime,
    26      toggleTime,
    27      removeTime
    28  
    29    var start = now(),
    30      last
    31  
    32    add()
    33  
    34    function add() {
    35      last = now()
    36      var newTodo = '12345',
    37        todoInput = document.getElementById('new-todo')
    38      for (var i = 0; i < itemsToAdd; i++) {
    39        var keyupEvent = document.createEvent('Event');
    40        keyupEvent.initEvent('keyup', true, true);
    41        keyupEvent.keyCode = 13;
    42        app.newTodo = 'Something to do ' + i;
    43        todoInput.dispatchEvent(keyupEvent)
    44      }
    45      setTimeout(toggle, 0)
    46    }
    47  
    48    function toggle () {
    49      addTime = now() - last
    50      var checkboxes = document.querySelectorAll('.toggle')
    51      for (var i = 0; i < checkboxes.length; i++) {
    52        checkboxes[i].click()
    53      }
    54      last = now()
    55      setTimeout(remove, 0)
    56    }
    57  
    58    function remove () {
    59      toggleTime = now() - last
    60      var deleteButtons = document.querySelectorAll('.destroy');
    61      for (var i = 0; i < deleteButtons.length; i++) {
    62        deleteButtons[i].click()
    63      }
    64      last = now()
    65      setTimeout(report, 0)
    66    }
    67  
    68    function report () {
    69      bench = now() - start
    70      removeTime = now() - last
    71      console.log('\nBenchmark x ' + itemsToAdd)
    72      console.log('add    : ' + addTime.toFixed(2) + 'ms')
    73      console.log('toggle : ' + toggleTime.toFixed(2) + 'ms')
    74      console.log('remove : ' + removeTime.toFixed(2) + 'ms')
    75      console.log('total  : ' + bench.toFixed(2) + 'ms')
    76    }
    77  
    78  }, 0)