X Tutup
Skip to content

Commit 9a9a13a

Browse files
committed
feat(change_detection): add benchmarks
1 parent 6e8175a commit 9a9a13a

File tree

7 files changed

+97
-0
lines changed

7 files changed

+97
-0
lines changed

modules/benchmarks/pubspec.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,5 @@ dependencies:
88
path: ../di
99
core:
1010
path: ../core
11+
change_detection:
12+
path: ../change_detection
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
library benchmark;
2+
3+
import './change_detection_benchmark.dart' as cdb;
4+
import 'dart:js' as js;
5+
6+
main () {
7+
js.context['benchmarkSteps'].add(new js.JsObject.jsify({
8+
"name": "Change Detection",
9+
"fn": new js.JsFunction.withThis((_) => cdb.run())
10+
}));
11+
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
System.import('benchmarks/change_detection/change_detection_benchmark').then(function (bm) {
2+
window.benchmarkSteps.push({name: 'ChangeDetection', fn: bm.run});
3+
}, console.log.bind(console));
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
module.exports = function(config) {
2+
config.set({
3+
scripts: [
4+
{src: '/js/traceur-runtime.js'},
5+
{src: '/js/es6-module-loader-sans-promises.src.js'},
6+
{src: '/js/extension-register.js'},
7+
{src: 'register_system.js'},
8+
{src: 'benchmark.js'}
9+
]
10+
});
11+
};
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
import {ListWrapper, MapWrapper} from 'facade/collection';
2+
import {Parser} from 'change_detection/parser/parser';
3+
import {Lexer} from 'change_detection/parser/lexer';
4+
import {reflector} from 'reflection/reflection';
5+
6+
import {
7+
ChangeDetector,
8+
ProtoRecordRange,
9+
WatchGroupDispatcher,
10+
} from 'change_detection/change_detector';
11+
12+
13+
var ITERATIONS = 100000;
14+
15+
export function run () {
16+
reflector.registerGetters({
17+
'a': function(obj){return obj.a},
18+
'b': function(obj){return obj.b},
19+
'c': function(obj){return obj.c}
20+
});
21+
22+
reflector.registerSetters({
23+
'a': function(obj, v){return obj.a = v},
24+
'b': function(obj, v){return obj.b = v},
25+
'c': function(obj, v){return obj.c = v}
26+
});
27+
28+
var parser = new Parser(new Lexer());
29+
var astWithSource = parser.parseBinding('a + b * c');
30+
31+
var prr = new ProtoRecordRange();
32+
prr.addRecordsFromAST(astWithSource.ast, 'memo', false);
33+
34+
var dispatcher = new DummyDispatcher();
35+
var rr = prr.instantiate(dispatcher, MapWrapper.create());
36+
rr.setContext(new Component());
37+
38+
var cd = new ChangeDetector(rr);
39+
for (var i = 0; i < ITERATIONS; ++i) {
40+
cd.detectChanges();
41+
}
42+
}
43+
44+
45+
class DummyDispatcher extends WatchGroupDispatcher {
46+
onRecordChange(record, context) {
47+
}
48+
}
49+
50+
class Component {
51+
a:number;
52+
b:number;
53+
c:number;
54+
55+
constructor() {
56+
this.a = 1;
57+
this.b = 2;
58+
this.c = 3;
59+
}
60+
}

modules/benchmarks/src/change_detection/main.html

Whitespace-only changes.
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
System.paths = {
2+
'core/*': '/js/core/lib/*.js',
3+
'change_detection/*': '/js/change_detection/lib/*.js',
4+
'facade/*': '/js/facade/lib/*.js',
5+
'di/*': '/js/di/lib/*.js',
6+
'rtts_assert/*': '/js/rtts_assert/lib/*.js',
7+
'test_lib/*': '/js/test_lib/lib/*.js',
8+
'benchmarks/*': '/js/benchmarks/lib/*.js'
9+
};
10+
register(System);

0 commit comments

Comments
 (0)
X Tutup