60 lines
1.3 KiB
JavaScript
60 lines
1.3 KiB
JavaScript
|
import {ListWrapper, MapWrapper} from 'facade/collection';
|
||
|
import {Parser} from 'change_detection/parser/parser';
|
||
|
import {Lexer} from 'change_detection/parser/lexer';
|
||
|
import {reflector} from 'reflection/reflection';
|
||
|
|
||
|
import {
|
||
|
ChangeDetector,
|
||
|
ProtoRecordRange,
|
||
|
WatchGroupDispatcher,
|
||
|
} from 'change_detection/change_detector';
|
||
|
|
||
|
|
||
|
var ITERATIONS = 100000;
|
||
|
|
||
|
export function run () {
|
||
|
reflector.registerGetters({
|
||
|
'a': function(obj){return obj.a},
|
||
|
'b': function(obj){return obj.b},
|
||
|
'c': function(obj){return obj.c}
|
||
|
});
|
||
|
|
||
|
reflector.registerSetters({
|
||
|
'a': function(obj, v){return obj.a = v},
|
||
|
'b': function(obj, v){return obj.b = v},
|
||
|
'c': function(obj, v){return obj.c = v}
|
||
|
});
|
||
|
|
||
|
var parser = new Parser(new Lexer());
|
||
|
var astWithSource = parser.parseBinding('a + b * c');
|
||
|
|
||
|
var prr = new ProtoRecordRange();
|
||
|
prr.addRecordsFromAST(astWithSource.ast, 'memo', false);
|
||
|
|
||
|
var dispatcher = new DummyDispatcher();
|
||
|
var rr = prr.instantiate(dispatcher, MapWrapper.create());
|
||
|
rr.setContext(new Component());
|
||
|
|
||
|
var cd = new ChangeDetector(rr);
|
||
|
for (var i = 0; i < ITERATIONS; ++i) {
|
||
|
cd.detectChanges();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
class DummyDispatcher extends WatchGroupDispatcher {
|
||
|
onRecordChange(record, context) {
|
||
|
}
|
||
|
}
|
||
|
|
||
|
class Component {
|
||
|
a:number;
|
||
|
b:number;
|
||
|
c:number;
|
||
|
|
||
|
constructor() {
|
||
|
this.a = 1;
|
||
|
this.b = 2;
|
||
|
this.c = 3;
|
||
|
}
|
||
|
}
|