OLD | NEW |
| (Empty) |
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | |
2 // for details. All rights reserved. Use of this source code is governed by a | |
3 // BSD-style license that can be found in the LICENSE file. | |
4 | |
5 library polymer_expressions.benchmark.eval; | |
6 | |
7 import 'package:benchmark_harness/benchmark_harness.dart'; | |
8 import 'package:polymer_expressions/parser.dart' show parse; | |
9 import 'package:polymer_expressions/eval.dart' show eval, Scope; | |
10 | |
11 class Foo { | |
12 final Bar bar; | |
13 Foo(this.bar); | |
14 } | |
15 | |
16 class Bar { | |
17 String baz; | |
18 Bar(this.baz); | |
19 } | |
20 | |
21 class EvalBenchmark extends BenchmarkBase { | |
22 final expr; | |
23 final scope; | |
24 | |
25 EvalBenchmark(String name, String expr, {Object model, Map variables}) | |
26 : expr = parse(expr), | |
27 scope = new Scope(model: model, variables: variables), | |
28 super('$name: $expr '); | |
29 | |
30 run() { | |
31 var value = eval(expr, scope); | |
32 } | |
33 | |
34 } | |
35 | |
36 double total = 0.0; | |
37 | |
38 benchmark(String name, String expr, {Object model, Map variables}) { | |
39 var score = new EvalBenchmark(name, expr, model: model, variables: variables) | |
40 .measure(); | |
41 print("$name $expr: $score us"); | |
42 total += score; | |
43 } | |
44 | |
45 main() { | |
46 | |
47 benchmark('Constant', '1'); | |
48 benchmark('Top-level Name', 'foo', | |
49 variables: {'foo': new Foo(new Bar('hello'))}); | |
50 benchmark('Model field', 'bar', | |
51 model: new Foo(new Bar('hello'))); | |
52 benchmark('Path', 'foo.bar.baz', | |
53 variables: {'foo': new Foo(new Bar('hello'))}); | |
54 benchmark('Map', 'm["foo"]', | |
55 variables: {'m': {'foo': 1}}); | |
56 benchmark('Equality', '"abc" == "123"'); | |
57 print('total: $total us'); | |
58 | |
59 } | |
OLD | NEW |