Skip to content

Commit 7eb0843

Browse files
author
Evan You
committed
add initial load metrics to todomvc example
1 parent c6961ae commit 7eb0843

File tree

3 files changed

+86
-79
lines changed

3 files changed

+86
-79
lines changed

examples/todomvc/index.html

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -75,23 +75,31 @@ <h1>todos</h1>
7575
</section>
7676
<footer id="info">
7777
<p>Double-click to edit a todo</p>
78-
<p>Powered by <a href="https://github.com/yyx990803/vue">VueJS</a></p>
78+
<p>Powered by <a href="http://vuejs.org">Vue.js</a></p>
7979
<p>Created by <a href="http://evanyou.me">Evan You</a></p>
8080
</footer>
8181

82-
<!-- for PhantomJS/CasperJS testing only -->
82+
<!-- testing/benchmark only -->
8383
<script>
8484
if (navigator.userAgent.indexOf('PhantomJS') > -1) {
8585
localStorage.clear()
8686
}
87+
var now = window.performance && window.performance.now
88+
? function () { return window.performance.now() }
89+
: Date.now
90+
var metrics = { beforeLoad: now() }
8791
</script>
88-
<!-- end testing -->
92+
<!-- end testing/bench -->
8993

9094
<script src="../../dist/vue.js"></script>
95+
<script>metrics.afterLoad = now()</script>
9196
<script src="bower_components/director/director.js"></script>
9297
<script src="js/store.js"></script>
98+
<script>metrics.beforeRender = now()</script>
9399
<script src="js/app.js"></script>
94100
<script src="js/routes.js"></script>
95-
<script src="js/benchmark.js"></script>
101+
<script>metrics.afterRender = now()</script>
102+
<script src="js/perf.js"></script>
103+
96104
</body>
97105
</html>

examples/todomvc/js/benchmark.js

Lines changed: 0 additions & 75 deletions
This file was deleted.

examples/todomvc/js/perf.js

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

0 commit comments

Comments
 (0)