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

Side by Side Diff: third_party/pkg/angular/perf/parser_perf.dart

Issue 124053002: Adding Angular and dependent packages for testing (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 11 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 library parser_perf;
2
3 import '_perf.dart';
4 import 'package:angular/core/module.dart';
5 import 'package:angular/core/parser/parser_library.dart';
6 import 'package:angular/filter/module.dart';
7 import 'package:di/di.dart';
8 import 'package:di/dynamic_injector.dart';
9 import 'package:intl/intl.dart';
10
11 import '../gen/generated_functions.dart' as generated_functions;
12 import '../gen/generated_getter_setter.dart' as generated_getter_setter;
13
14 main() {
15 var module = new Module()
16 ..type(Parser, implementedBy: DynamicParser)
17 ..type(SubstringFilter)
18 ..type(IncrementFilter)
19 ..install(new NgFilterModule());
20 var injector = new DynamicInjector(
21 modules: [module],
22 allowImplicitInjection:true);
23 var scope = injector.get(Scope);
24 var reflectiveParser = injector.get(Parser);
25 var filterMap = injector.get(FilterMap);
26
27 var generatedParser = new DynamicInjector(
28 modules: [new Module()
29 ..type(Parser, implementedBy: StaticParser)
30 ..value(StaticParserFunctions, generated_functions.functions(filterMap)) ],
31 allowImplicitInjection:true).get(Parser);
32
33 var hybridParser = new DynamicInjector(
34 modules: [new Module()
35 ..type(Parser, implementedBy: DynamicParser)
36 ..type(GetterSetter, implementedBy: generated_getter_setter.StaticGetter Setter)],
37 allowImplicitInjection:true).get(Parser);
38
39 scope['a'] = new ATest();
40 scope['e1'] = new EqualsThrows();
41 scope['o'] = new OTest();
42
43 compare(expr, idealFn) {
44 var nf = new NumberFormat.decimalPattern();
45 var reflectionExpr = reflectiveParser(expr);
46 var generatedExpr = generatedParser(expr);
47 var hybridExpr = hybridParser(expr);
48 var measure = (b) => statMeasure(b).mean_ops_sec;
49 var gTime = measure(() => generatedExpr.eval(scope));
50 var rTime = measure(() => reflectionExpr.eval(scope));
51 var hTime = measure(() => hybridExpr.eval(scope));
52 var iTime = measure(() => idealFn(scope));
53 print('$expr => g: ${nf.format(gTime)} ops/sec ' +
54 'r: ${nf.format(rTime)} ops/sec ' +
55 'h: ${nf.format(hTime)} ops/sec ' +
56 'i: ${nf.format(iTime)} ops/sec = ' +
57 'i/g: ${nf.format(iTime / gTime)} x ' +
58 'i/r: ${nf.format(iTime / rTime)} x ' +
59 'i/h: ${nf.format(iTime / hTime)} x ' +
60 'g/h: ${nf.format(gTime / hTime)} x ' +
61 'h/r: ${nf.format(hTime / rTime)} x ' +
62 'g/r: ${nf.format(gTime / rTime)} x');
63 }
64
65 compare('a.b.c', (scope) => scope['a'].b.c);
66 compare('e1.b', (scope) => scope['e1'].b);
67 compare('o.f()', (scope) => scope['o'].f());
68 compare('null', (scope) => null);
69 compare('x.b.c', (s, [l]) {
70 if (l != null && l.containsKey('x')) s = l['x'];
71 else if (s != null ) s = s is Map ? s['x'] : s.x;
72 if (s != null ) s = s is Map ? s['b'] : s.b;
73 if (s != null ) s = s is Map ? s['c'] : s.c;
74 return s;
75 });
76 compare('doesNotExist', (scope) => scope['doesNotExists']);
77 }
78
79
80 class ATest {
81 var b = new BTest();
82 }
83
84 class BTest {
85 var c = 6;
86 }
87
88 class OTest {
89 f() => 42;
90 }
91
92 class EqualsThrows {
93 var b = 3;
94 operator ==(x) {
95 try {
96 throw "no";
97 } catch (e) {
98 return false;
99 }
100 }
101 }
102
103 @NgFilter(name:'increment')
104 class IncrementFilter {
105 call(a, b) => a + b;
106 }
107
108 @NgFilter(name:'substring')
109 class SubstringFilter {
110 call(String str, startIndex, [endIndex]) {
111 return str.substring(startIndex, endIndex);
112 }
113 }
114
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698