Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(37)

Unified Diff: third_party/pkg/angular/perf/watch_group_perf.dart

Issue 180873006: Update the Angular/DI tests to latest from github. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Review feedback Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « third_party/pkg/angular/perf/scope_perf.dart ('k') | third_party/pkg/angular/pubspec.yaml » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
new file mode 100644
index 0000000000000000000000000000000000000000..bfc2ab6a517b3e182eda214ee05c22b4940614a7
--- /dev/null
+++ b/third_party/pkg/angular/perf/watch_group_perf.dart
@@ -0,0 +1,313 @@
+library angular.perf.watch_group;
+
+import '_perf.dart';
+import 'package:angular/change_detection/dirty_checking_change_detector.dart';
+import 'package:angular/change_detection/watch_group.dart';
+import 'package:benchmark_harness/benchmark_harness.dart';
+
+@MirrorsUsed(
+ targets: const [
+ 'angular.perf.watch_group'
+ ],
+ override: '*'
+)
+import 'dart:mirrors' show MirrorsUsed;
+
+var _reactionFn = (_, __) => null;
+var _getterCache = new GetterCache({});
+main() {
+ _fieldRead();
+ _fieldReadGetter();
+ _mapRead();
+ _methodInvoke0();
+ _methodInvoke1();
+ _function2();
+ new _CollectionCheck().report();
+}
+
+class _CollectionCheck extends BenchmarkBase {
+ List<int> list = new List.generate(1000, (i) => i);
+ var detector = new DirtyCheckingChangeDetector(_getterCache);
+
+ _CollectionCheck(): super('change-detect List[1000]') {
+ detector
+ ..watch(list, null, 'handler')
+ ..collectChanges(); // intialize
+ }
+
+ run() {
+ detector.collectChanges();
+ }
+}
+
+_fieldRead() {
+ var watchGrp = new RootWatchGroup(
+ new DirtyCheckingChangeDetector(_getterCache), new _Obj())
+ ..watch(_parse('a'), _reactionFn)
+ ..watch(_parse('b'), _reactionFn)
+ ..watch(_parse('c'), _reactionFn)
+ ..watch(_parse('d'), _reactionFn)
+ ..watch(_parse('e'), _reactionFn)
+ ..watch(_parse('f'), _reactionFn)
+ ..watch(_parse('g'), _reactionFn)
+ ..watch(_parse('h'), _reactionFn)
+ ..watch(_parse('i'), _reactionFn)
+ ..watch(_parse('j'), _reactionFn)
+ ..watch(_parse('k'), _reactionFn)
+ ..watch(_parse('l'), _reactionFn)
+ ..watch(_parse('m'), _reactionFn)
+ ..watch(_parse('n'), _reactionFn)
+ ..watch(_parse('o'), _reactionFn)
+ ..watch(_parse('p'), _reactionFn)
+ ..watch(_parse('q'), _reactionFn)
+ ..watch(_parse('r'), _reactionFn)
+ ..watch(_parse('s'), _reactionFn)
+ ..watch(_parse('t'), _reactionFn);
+
+ print('Watch: ${watchGrp.fieldCost}; eval: ${watchGrp.evalCost}');
+
+ time('fieldRead', () => watchGrp.detectChanges());
+}
+
+_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())
+ ..watch(_parse('a'), _reactionFn)
+ ..watch(_parse('b'), _reactionFn)
+ ..watch(_parse('c'), _reactionFn)
+ ..watch(_parse('d'), _reactionFn)
+ ..watch(_parse('e'), _reactionFn)
+ ..watch(_parse('f'), _reactionFn)
+ ..watch(_parse('g'), _reactionFn)
+ ..watch(_parse('h'), _reactionFn)
+ ..watch(_parse('i'), _reactionFn)
+ ..watch(_parse('j'), _reactionFn)
+ ..watch(_parse('k'), _reactionFn)
+ ..watch(_parse('l'), _reactionFn)
+ ..watch(_parse('m'), _reactionFn)
+ ..watch(_parse('n'), _reactionFn)
+ ..watch(_parse('o'), _reactionFn)
+ ..watch(_parse('p'), _reactionFn)
+ ..watch(_parse('q'), _reactionFn)
+ ..watch(_parse('r'), _reactionFn)
+ ..watch(_parse('s'), _reactionFn)
+ ..watch(_parse('t'), _reactionFn);
+
+ print('Watch: ${watchGrp.fieldCost}; eval: ${watchGrp.evalCost}');
+
+ time('fieldReadGetter', () => watchGrp.detectChanges());
+}
+
+_mapRead() {
+ var map = {
+ 'a': 0, 'b': 1, 'c': 2, 'd': 3, 'e': 4,
+ '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)
+ ..watch(_parse('a'), _reactionFn)
+ ..watch(_parse('b'), _reactionFn)
+ ..watch(_parse('c'), _reactionFn)
+ ..watch(_parse('d'), _reactionFn)
+ ..watch(_parse('e'), _reactionFn)
+ ..watch(_parse('f'), _reactionFn)
+ ..watch(_parse('g'), _reactionFn)
+ ..watch(_parse('h'), _reactionFn)
+ ..watch(_parse('i'), _reactionFn)
+ ..watch(_parse('j'), _reactionFn)
+ ..watch(_parse('k'), _reactionFn)
+ ..watch(_parse('l'), _reactionFn)
+ ..watch(_parse('m'), _reactionFn)
+ ..watch(_parse('n'), _reactionFn)
+ ..watch(_parse('o'), _reactionFn)
+ ..watch(_parse('p'), _reactionFn)
+ ..watch(_parse('q'), _reactionFn)
+ ..watch(_parse('r'), _reactionFn)
+ ..watch(_parse('s'), _reactionFn)
+ ..watch(_parse('t'), _reactionFn);
+
+ print('Watch: ${watchGrp.fieldCost}; eval: ${watchGrp.evalCost}');
+ time('mapRead', () => watchGrp.detectChanges());
+}
+
+_methodInvoke0() {
+ var context = new _Obj();
+ context.a = new _Obj();
+ var watchGrp = new RootWatchGroup(
+ new DirtyCheckingChangeDetector(_getterCache), context)
+ ..watch(_method('a', 'methodA'), _reactionFn)
+ ..watch(_method('a', 'methodB'), _reactionFn)
+ ..watch(_method('a', 'methodC'), _reactionFn)
+ ..watch(_method('a', 'methodD'), _reactionFn)
+ ..watch(_method('a', 'methodE'), _reactionFn)
+ ..watch(_method('a', 'methodF'), _reactionFn)
+ ..watch(_method('a', 'methodG'), _reactionFn)
+ ..watch(_method('a', 'methodH'), _reactionFn)
+ ..watch(_method('a', 'methodI'), _reactionFn)
+ ..watch(_method('a', 'methodJ'), _reactionFn)
+ ..watch(_method('a', 'methodK'), _reactionFn)
+ ..watch(_method('a', 'methodL'), _reactionFn)
+ ..watch(_method('a', 'methodM'), _reactionFn)
+ ..watch(_method('a', 'methodN'), _reactionFn)
+ ..watch(_method('a', 'methodO'), _reactionFn)
+ ..watch(_method('a', 'methodP'), _reactionFn)
+ ..watch(_method('a', 'methodQ'), _reactionFn)
+ ..watch(_method('a', 'methodR'), _reactionFn)
+ ..watch(_method('a', 'methodS'), _reactionFn)
+ ..watch(_method('a', 'methodT'), _reactionFn);
+
+ print('Watch: ${watchGrp.fieldCost}; eval: ${watchGrp.evalCost}');
+ time('obj.method?()', () => watchGrp.detectChanges());
+}
+
+_methodInvoke1() {
+ var context = new _Obj();
+ context.a = new _Obj();
+ var watchGrp = new RootWatchGroup(
+ new DirtyCheckingChangeDetector(_getterCache), context)
+ ..watch(_method('a', 'methodA1', [_parse('a')]), _reactionFn)
+ ..watch(_method('a', 'methodB1', [_parse('a')]), _reactionFn)
+ ..watch(_method('a', 'methodC1', [_parse('a')]), _reactionFn)
+ ..watch(_method('a', 'methodD1', [_parse('a')]), _reactionFn)
+ ..watch(_method('a', 'methodE1', [_parse('a')]), _reactionFn)
+ ..watch(_method('a', 'methodF1', [_parse('a')]), _reactionFn)
+ ..watch(_method('a', 'methodG1', [_parse('a')]), _reactionFn)
+ ..watch(_method('a', 'methodH1', [_parse('a')]), _reactionFn)
+ ..watch(_method('a', 'methodI1', [_parse('a')]), _reactionFn)
+ ..watch(_method('a', 'methodJ1', [_parse('a')]), _reactionFn)
+ ..watch(_method('a', 'methodK1', [_parse('a')]), _reactionFn)
+ ..watch(_method('a', 'methodL1', [_parse('a')]), _reactionFn)
+ ..watch(_method('a', 'methodM1', [_parse('a')]), _reactionFn)
+ ..watch(_method('a', 'methodN1', [_parse('a')]), _reactionFn)
+ ..watch(_method('a', 'methodO1', [_parse('a')]), _reactionFn)
+ ..watch(_method('a', 'methodP1', [_parse('a')]), _reactionFn)
+ ..watch(_method('a', 'methodQ1', [_parse('a')]), _reactionFn)
+ ..watch(_method('a', 'methodR1', [_parse('a')]), _reactionFn)
+ ..watch(_method('a', 'methodS1', [_parse('a')]), _reactionFn)
+ ..watch(_method('a', 'methodT1', [_parse('a')]), _reactionFn);
+
+ print('Watch: ${watchGrp.fieldCost}; eval: ${watchGrp.evalCost}');
+ time('obj.method?(obj)', () => watchGrp.detectChanges());
+}
+
+_function2() {
+ var context = new _Obj();
+ var watchGrp = new RootWatchGroup(
+ new DirtyCheckingChangeDetector(_getterCache), 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)
+ ..watch(_add(3, _parse('a'), _parse('a')), _reactionFn)
+ ..watch(_add(4, _parse('a'), _parse('a')), _reactionFn)
+ ..watch(_add(5, _parse('a'), _parse('a')), _reactionFn)
+ ..watch(_add(6, _parse('a'), _parse('a')), _reactionFn)
+ ..watch(_add(7, _parse('a'), _parse('a')), _reactionFn)
+ ..watch(_add(8, _parse('a'), _parse('a')), _reactionFn)
+ ..watch(_add(9, _parse('a'), _parse('a')), _reactionFn)
+ ..watch(_add(10, _parse('a'), _parse('a')), _reactionFn)
+ ..watch(_add(11, _parse('a'), _parse('a')), _reactionFn)
+ ..watch(_add(12, _parse('a'), _parse('a')), _reactionFn)
+ ..watch(_add(13, _parse('a'), _parse('a')), _reactionFn)
+ ..watch(_add(14, _parse('a'), _parse('a')), _reactionFn)
+ ..watch(_add(15, _parse('a'), _parse('a')), _reactionFn)
+ ..watch(_add(16, _parse('a'), _parse('a')), _reactionFn)
+ ..watch(_add(17, _parse('a'), _parse('a')), _reactionFn)
+ ..watch(_add(18, _parse('a'), _parse('a')), _reactionFn)
+ ..watch(_add(19, _parse('a'), _parse('a')), _reactionFn);
+
+ print('Watch: ${watchGrp.fieldCost}; eval: ${watchGrp.evalCost}');
+ time('add?(a, a)', () => watchGrp.detectChanges());
+}
+
+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 _parse(String expression) {
+ var currentAST = new ContextReferenceAST();
+ expression.split('.').forEach((name) {
+ currentAST = new FieldReadAST(currentAST, name);
+ });
+ return currentAST;
+}
+
+
+class _Obj {
+ var a = 1;
+ var b = 2;
+ var c = 3;
+ var d = 4;
+ var e = 5;
+
+ var f = 6;
+ var g = 7;
+ var h = 8;
+ var i = 9;
+ var j = 10;
+
+ var k = 11;
+ var l = 12;
+ var m = 13;
+ var n = 14;
+ var o = 15;
+
+ var p = 16;
+ var q = 17;
+ var r = 18;
+ var s = 19;
+ var t = 20;
+
+ methodA1(arg0) => a;
+ methodB1(arg0) => b;
+ methodC1(arg0) => c;
+ methodD1(arg0) => d;
+ methodE1(arg0) => e;
+ methodF1(arg0) => f;
+ methodG1(arg0) => g;
+ methodH1(arg0) => h;
+ methodI1(arg0) => i;
+ methodJ1(arg0) => j;
+ methodK1(arg0) => k;
+ methodL1(arg0) => l;
+ methodM1(arg0) => m;
+ methodN1(arg0) => n;
+ methodO1(arg0) => o;
+ methodP1(arg0) => p;
+ methodQ1(arg0) => q;
+ methodR1(arg0) => r;
+ methodS1(arg0) => s;
+ methodT1(arg0) => t;
+
+ methodA() => a;
+ methodB() => b;
+ methodC() => c;
+ methodD() => d;
+ methodE() => e;
+ methodF() => f;
+ methodG() => g;
+ methodH() => h;
+ methodI() => i;
+ methodJ() => j;
+ methodK() => k;
+ methodL() => l;
+ methodM() => m;
+ methodN() => n;
+ methodO() => o;
+ methodP() => p;
+ methodQ() => q;
+ methodR() => r;
+ methodS() => s;
+ methodT() => t;
+
+}
« no previous file with comments | « third_party/pkg/angular/perf/scope_perf.dart ('k') | third_party/pkg/angular/pubspec.yaml » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698