Skip to content
This repository was archived by the owner on Feb 26, 2024. It is now read-only.

Commit 128649a

Browse files
JiaLiPassionmhevery
authored andcommitted
feat(test): add benchmark page (#1076)
1 parent 917e2af commit 128649a

8 files changed

+866
-0
lines changed

Diff for: test/performance/eventTarget.js

+84
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
/**
2+
* @license
3+
* Copyright Google Inc. All Rights Reserved.
4+
*
5+
* Use of this source code is governed by an MIT-style license that can be
6+
* found in the LICENSE file at https://angular.io/license
7+
*/
8+
(function(_global) {
9+
var testRunner = _global['__zone_symbol__testRunner'];
10+
var mark = _global['__zone_symbol__mark'];
11+
var measure = _global['__zone_symbol__measure'];
12+
var zone = _global['__zone_symbol__callbackZone'];
13+
var button;
14+
var testTarget = {
15+
title: 'addEventListener',
16+
times: 10,
17+
before: function() {
18+
button = document.createElement('button');
19+
document.body.appendChild(button);
20+
_global['__zone_symbol__callbackContext'].measureName = 'addEventListener_callback';
21+
_global['__zone_symbol__callbackContext'].type = 'eventTask';
22+
_global['__zone_symbol__callbackContext'].source = 'addEventListener';
23+
},
24+
after: function() {
25+
document.body.removeChild(button);
26+
button = null;
27+
},
28+
apis: [
29+
{
30+
supportClear: true,
31+
method: 'addEventListener',
32+
nativeMethod: '__zone_symbol__addEventListener',
33+
clearMethod: 'removeEventListener',
34+
nativeClearMethod: '__zone_symbol__removeEventListener',
35+
run: function() {
36+
var listener = function() {};
37+
button.addEventListener('click', listener);
38+
return listener;
39+
},
40+
runClear: function(timerId) {
41+
return button.removeEventListener('click', timerId);
42+
},
43+
nativeRun: function() {
44+
var listener = function() {};
45+
button['__zone_symbol__addEventListener']('click', listener);
46+
return listener;
47+
},
48+
nativeRunClear: function(timerId) {
49+
return button['__zone_symbol__removeEventListener']('click', timerId);
50+
}
51+
},
52+
{
53+
isCallback: true,
54+
supportClear: false,
55+
method: 'addEventListener_callback',
56+
nativeMethod: 'native_addEventListener_callback',
57+
run: function() {
58+
var listener = function() {};
59+
zone.run(function() {
60+
button.addEventListener('click', listener);
61+
});
62+
var event = document.createEvent('Event');
63+
event.initEvent('click', true, true);
64+
button.dispatchEvent(event);
65+
button.removeEventListener('click', listener);
66+
},
67+
nativeRun: function() {
68+
var func = function() {};
69+
var listener = function() {
70+
mark('native_addEventListener_callback');
71+
func.apply(this, arguments);
72+
measure('native_addEventListener_callback', 'native_addEventListener_callback');
73+
};
74+
button['__zone_symbol__addEventListener']('click', listener);
75+
var event = document.createEvent('Event');
76+
event.initEvent('click', true, true);
77+
button.dispatchEvent(event);
78+
button['__zone_symbol__removeEventListener']('click', listener);
79+
}
80+
}
81+
],
82+
};
83+
return testRunner(testTarget);
84+
}(typeof window === 'undefined' ? global : window));

Diff for: test/performance/performance.html

+73
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
<!DOCTYPE html>
2+
<html>
3+
4+
<head>
5+
<style>
6+
table {
7+
border-collapse: collapse;
8+
}
9+
10+
table,
11+
th,
12+
td {
13+
border: 1px solid black;
14+
}
15+
16+
ul {
17+
font-size: 24px
18+
}
19+
20+
li {
21+
font-size: 16px
22+
}
23+
</style>
24+
<script src='../../dist/zone.js'></script>
25+
<script src='./performance_setup.js'></script>
26+
<script src='./performance_ui.js'></script>
27+
<script src='./timeout.js'></script>
28+
<script src='./requestAnimationFrame.js'></script>
29+
<script src='./eventTarget.js'></script>
30+
<script src='./xhr.js'></script>
31+
<script src='./promise.js'></script>
32+
<script>
33+
window.onload = function () {
34+
var jsonResult = {};
35+
36+
var div = document.getElementById('tests');
37+
var json = document.getElementById('json');
38+
var table = document.getElementById('summary');
39+
40+
var tests = window['__zone_symbol__performance_tasks'];
41+
window['__zone_symbol__testTargetsUIBuild']({
42+
tests: tests,
43+
targetContainer: div,
44+
resultsContainer: table,
45+
jsonContainer: json,
46+
jsonResult: jsonResult
47+
});
48+
}
49+
</script>
50+
</head>
51+
52+
<body>
53+
<div id="thetext">Performance Bencnhmark of Zone.js vs Native Delegate!</div>
54+
<div id="tests"></div>
55+
<div>
56+
<table id="summary" class="table">
57+
<tr class="tableheader">
58+
<th>
59+
Module
60+
</th>
61+
<th>
62+
API
63+
</th>
64+
<th>
65+
Performance overhead
66+
</th>
67+
</tr>
68+
</table>
69+
</div>
70+
<div id="json"></div>
71+
</body>
72+
73+
</html>

0 commit comments

Comments
 (0)