| OLD | NEW |
| 1 library parser_perf; | 1 library parser_perf; |
| 2 | 2 |
| 3 import '_perf.dart'; | 3 import '_perf.dart'; |
| 4 import 'package:angular/core/module.dart'; | 4 import 'package:angular/core/module.dart'; |
| 5 import 'package:angular/core/parser/parser_library.dart'; | 5 import 'package:angular/core/parser/parser.dart'; |
| 6 import 'package:angular/filter/module.dart'; | 6 import 'package:angular/filter/module.dart'; |
| 7 import 'package:di/di.dart'; | 7 import 'package:di/di.dart'; |
| 8 import 'package:di/dynamic_injector.dart'; | 8 import 'package:di/dynamic_injector.dart'; |
| 9 import 'package:intl/intl.dart'; | 9 import 'package:intl/intl.dart'; |
| 10 | 10 |
| 11 import '../gen/generated_functions.dart' as generated_functions; | 11 import '../gen/generated_functions.dart' as generated_functions; |
| 12 import '../gen/generated_getter_setter.dart' as generated_getter_setter; | 12 import '../gen/generated_getter_setter.dart' as generated_getter_setter; |
| 13 | 13 |
| 14 main() { | 14 main() { |
| 15 var module = new Module() | 15 var module = new Module() |
| 16 ..type(Parser, implementedBy: DynamicParser) | 16 ..type(Parser, implementedBy: DynamicParser) |
| 17 ..type(ParserBackend, implementedBy: DynamicParserBackend) |
| 17 ..type(SubstringFilter) | 18 ..type(SubstringFilter) |
| 18 ..type(IncrementFilter) | 19 ..type(IncrementFilter) |
| 19 ..install(new NgFilterModule()); | 20 ..install(new NgFilterModule()); |
| 20 var injector = new DynamicInjector( | 21 var injector = new DynamicInjector( |
| 21 modules: [module], | 22 modules: [module], |
| 22 allowImplicitInjection:true); | 23 allowImplicitInjection:true); |
| 23 var scope = injector.get(Scope); | 24 var scope = injector.get(Scope); |
| 24 var reflectiveParser = injector.get(Parser); | 25 var reflectiveParser = injector.get(Parser); |
| 25 var filterMap = injector.get(FilterMap); | 26 var filterMap = injector.get(FilterMap); |
| 26 | 27 |
| 27 var generatedParser = new DynamicInjector( | 28 var generatedParser = new DynamicInjector( |
| 28 modules: [new Module() | 29 modules: [new Module() |
| 29 ..type(Parser, implementedBy: StaticParser) | 30 ..type(Parser, implementedBy: StaticParser) |
| 30 ..value(StaticParserFunctions, generated_functions.functions(filterMap))
], | 31 ..value(StaticParserFunctions, generated_functions.functions(filterMap))
], |
| 31 allowImplicitInjection:true).get(Parser); | 32 allowImplicitInjection:true).get(Parser); |
| 32 | 33 |
| 33 var hybridParser = new DynamicInjector( | 34 var hybridParser = new DynamicInjector( |
| 34 modules: [new Module() | 35 modules: [new Module() |
| 35 ..type(Parser, implementedBy: DynamicParser) | 36 ..type(Parser, implementedBy: DynamicParser) |
| 36 ..type(GetterSetter, implementedBy: generated_getter_setter.StaticGetter
Setter)], | 37 ..type(ParserBackend, implementedBy: DynamicParserBackend) |
| 38 ..type(ClosureMap, implementedBy: generated_getter_setter.StaticClosureM
ap)], |
| 37 allowImplicitInjection:true).get(Parser); | 39 allowImplicitInjection:true).get(Parser); |
| 38 | 40 |
| 39 scope['a'] = new ATest(); | 41 scope['a'] = new ATest(); |
| 40 scope['e1'] = new EqualsThrows(); | 42 scope['e1'] = new EqualsThrows(); |
| 41 scope['o'] = new OTest(); | 43 scope['o'] = new OTest(); |
| 42 | 44 |
| 43 compare(expr, idealFn) { | 45 compare(expr, idealFn) { |
| 44 var nf = new NumberFormat.decimalPattern(); | 46 var nf = new NumberFormat.decimalPattern(); |
| 45 var reflectionExpr = reflectiveParser(expr); | 47 Expression reflectionExpr = reflectiveParser(expr); |
| 46 var generatedExpr = generatedParser(expr); | 48 Expression generatedExpr = generatedParser(expr); |
| 47 var hybridExpr = hybridParser(expr); | 49 Expression hybridExpr = hybridParser(expr); |
| 48 var measure = (b) => statMeasure(b).mean_ops_sec; | 50 var measure = (b) => statMeasure(b).mean_ops_sec; |
| 49 var gTime = measure(() => generatedExpr.eval(scope)); | 51 var gTime = measure(() => generatedExpr.eval(scope)); |
| 50 var rTime = measure(() => reflectionExpr.eval(scope)); | 52 var rTime = measure(() => reflectionExpr.eval(scope)); |
| 51 var hTime = measure(() => hybridExpr.eval(scope)); | 53 var hTime = measure(() => hybridExpr.eval(scope)); |
| 52 var iTime = measure(() => idealFn(scope)); | 54 var iTime = measure(() => idealFn(scope)); |
| 53 print('$expr => g: ${nf.format(gTime)} ops/sec ' + | 55 print('$expr => g: ${nf.format(gTime)} ops/sec ' + |
| 54 'r: ${nf.format(rTime)} ops/sec ' + | 56 'r: ${nf.format(rTime)} ops/sec ' + |
| 55 'h: ${nf.format(hTime)} ops/sec ' + | 57 'h: ${nf.format(hTime)} ops/sec ' + |
| 56 'i: ${nf.format(iTime)} ops/sec = ' + | 58 'i: ${nf.format(iTime)} ops/sec = ' + |
| 57 'i/g: ${nf.format(iTime / gTime)} x ' + | 59 'i/g: ${nf.format(iTime / gTime)} x ' + |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 105 call(a, b) => a + b; | 107 call(a, b) => a + b; |
| 106 } | 108 } |
| 107 | 109 |
| 108 @NgFilter(name:'substring') | 110 @NgFilter(name:'substring') |
| 109 class SubstringFilter { | 111 class SubstringFilter { |
| 110 call(String str, startIndex, [endIndex]) { | 112 call(String str, startIndex, [endIndex]) { |
| 111 return str.substring(startIndex, endIndex); | 113 return str.substring(startIndex, endIndex); |
| 112 } | 114 } |
| 113 } | 115 } |
| 114 | 116 |
| OLD | NEW |