Index: third_party/pkg/angular/perf/watch_group_perf.dart |
diff --git a/third_party/pkg/angular/perf/watch_group_perf.dart b/third_party/pkg/angular/perf/watch_group_perf.dart |
index bfc2ab6a517b3e182eda214ee05c22b4940614a7..5d518d29ccfb1056a7ea28c1939b99404af6347e 100644 |
--- a/third_party/pkg/angular/perf/watch_group_perf.dart |
+++ b/third_party/pkg/angular/perf/watch_group_perf.dart |
@@ -2,6 +2,8 @@ library angular.perf.watch_group; |
import '_perf.dart'; |
import 'package:angular/change_detection/dirty_checking_change_detector.dart'; |
+import 'package:angular/change_detection/dirty_checking_change_detector_dynamic.dart'; |
+import 'package:angular/change_detection/dirty_checking_change_detector_static.dart'; |
import 'package:angular/change_detection/watch_group.dart'; |
import 'package:benchmark_harness/benchmark_harness.dart'; |
@@ -14,7 +16,14 @@ import 'package:benchmark_harness/benchmark_harness.dart'; |
import 'dart:mirrors' show MirrorsUsed; |
var _reactionFn = (_, __) => null; |
-var _getterCache = new GetterCache({}); |
+var _staticFieldGetterFactory = new StaticFieldGetterFactory({ |
+ "a": (o) => o.a, "b": (o) => o.b, "c": (o) => o.c, "d": (o) => o.d, "e": (o) => o.e, |
+ "f": (o) => o.f, "g": (o) => o.g, "h": (o) => o.h, "i": (o) => o.i, "j": (o) => o.j, |
+ "k": (o) => o.k, "l": (o) => o.l, "m": (o) => o.m, "n": (o) => o.n, "o": (o) => o.o, |
+ "p": (o) => o.p, "q": (o) => o.q, "r": (o) => o.r, "s": (o) => o.s, "t": (o) => o.t, |
+}); |
+var _dynamicFieldGetterFactory = new DynamicFieldGetterFactory(); |
+ |
main() { |
_fieldRead(); |
_fieldReadGetter(); |
@@ -27,7 +36,7 @@ main() { |
class _CollectionCheck extends BenchmarkBase { |
List<int> list = new List.generate(1000, (i) => i); |
- var detector = new DirtyCheckingChangeDetector(_getterCache); |
+ var detector = new DirtyCheckingChangeDetector(_dynamicFieldGetterFactory); |
_CollectionCheck(): super('change-detect List[1000]') { |
detector |
@@ -41,8 +50,8 @@ class _CollectionCheck extends BenchmarkBase { |
} |
_fieldRead() { |
- var watchGrp = new RootWatchGroup( |
- new DirtyCheckingChangeDetector(_getterCache), new _Obj()) |
+ var watchGrp = new RootWatchGroup(_dynamicFieldGetterFactory, |
+ new DirtyCheckingChangeDetector(_dynamicFieldGetterFactory), new _Obj()) |
..watch(_parse('a'), _reactionFn) |
..watch(_parse('b'), _reactionFn) |
..watch(_parse('c'), _reactionFn) |
@@ -70,14 +79,8 @@ _fieldRead() { |
} |
_fieldReadGetter() { |
- var getterCache = new GetterCache({ |
- "a": (o) => o.a, "b": (o) => o.b, "c": (o) => o.c, "d": (o) => o.d, "e": (o) => o.e, |
- "f": (o) => o.f, "g": (o) => o.g, "h": (o) => o.h, "i": (o) => o.i, "j": (o) => o.j, |
- "k": (o) => o.k, "l": (o) => o.l, "m": (o) => o.m, "n": (o) => o.n, "o": (o) => o.o, |
- "p": (o) => o.p, "q": (o) => o.q, "r": (o) => o.r, "s": (o) => o.s, "t": (o) => o.t, |
- }); |
- var watchGrp= new RootWatchGroup( |
- new DirtyCheckingChangeDetector(getterCache), new _Obj()) |
+ var watchGrp= new RootWatchGroup(_staticFieldGetterFactory, |
+ new DirtyCheckingChangeDetector(_staticFieldGetterFactory), new _Obj()) |
..watch(_parse('a'), _reactionFn) |
..watch(_parse('b'), _reactionFn) |
..watch(_parse('c'), _reactionFn) |
@@ -110,8 +113,8 @@ _mapRead() { |
'f': 0, 'g': 1, 'h': 2, 'i': 3, 'j': 4, |
'k': 0, 'l': 1, 'm': 2, 'n': 3, 'o': 4, |
'p': 0, 'q': 1, 'r': 2, 's': 3, 't': 4}; |
- var watchGrp = new RootWatchGroup( |
- new DirtyCheckingChangeDetector(_getterCache), map) |
+ var watchGrp = new RootWatchGroup(_dynamicFieldGetterFactory, |
+ new DirtyCheckingChangeDetector(_dynamicFieldGetterFactory), map) |
..watch(_parse('a'), _reactionFn) |
..watch(_parse('b'), _reactionFn) |
..watch(_parse('c'), _reactionFn) |
@@ -140,8 +143,8 @@ _mapRead() { |
_methodInvoke0() { |
var context = new _Obj(); |
context.a = new _Obj(); |
- var watchGrp = new RootWatchGroup( |
- new DirtyCheckingChangeDetector(_getterCache), context) |
+ var watchGrp = new RootWatchGroup(_dynamicFieldGetterFactory, |
+ new DirtyCheckingChangeDetector(_dynamicFieldGetterFactory), context) |
..watch(_method('a', 'methodA'), _reactionFn) |
..watch(_method('a', 'methodB'), _reactionFn) |
..watch(_method('a', 'methodC'), _reactionFn) |
@@ -170,8 +173,8 @@ _methodInvoke0() { |
_methodInvoke1() { |
var context = new _Obj(); |
context.a = new _Obj(); |
- var watchGrp = new RootWatchGroup( |
- new DirtyCheckingChangeDetector(_getterCache), context) |
+ var watchGrp = new RootWatchGroup(_dynamicFieldGetterFactory, |
+ new DirtyCheckingChangeDetector(_dynamicFieldGetterFactory), context) |
..watch(_method('a', 'methodA1', [_parse('a')]), _reactionFn) |
..watch(_method('a', 'methodB1', [_parse('a')]), _reactionFn) |
..watch(_method('a', 'methodC1', [_parse('a')]), _reactionFn) |
@@ -199,8 +202,8 @@ _methodInvoke1() { |
_function2() { |
var context = new _Obj(); |
- var watchGrp = new RootWatchGroup( |
- new DirtyCheckingChangeDetector(_getterCache), context) |
+ var watchGrp = new RootWatchGroup(_dynamicFieldGetterFactory, |
+ new DirtyCheckingChangeDetector(_dynamicFieldGetterFactory), context) |
..watch(_add(0, _parse('a'), _parse('a')), _reactionFn) |
..watch(_add(1, _parse('a'), _parse('a')), _reactionFn) |
..watch(_add(2, _parse('a'), _parse('a')), _reactionFn) |
@@ -229,9 +232,10 @@ _function2() { |
AST _add(id, lhs, rhs) => |
new PureFunctionAST('add$id', (a, b) => a + b, [lhs, rhs]); |
-AST _method(lhs, methodName, [args]) { |
- if (args == null) args = []; |
- return new MethodAST(_parse(lhs), methodName, args); |
+AST _method(lhs, methodName, [args, namedArgs]) { |
+ if (args == null) args = const []; |
+ if (namedArgs == null) namedArgs = const {}; |
+ return new MethodAST(_parse(lhs), methodName, args, namedArgs); |
} |
AST _parse(String expression) { |