| Index: packages/polymer_expressions/benchmark/eval.dart
|
| diff --git a/packages/polymer_expressions/benchmark/eval.dart b/packages/polymer_expressions/benchmark/eval.dart
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..7bc0f562a3f338aa232910234dc2e209d5a0bfd9
|
| --- /dev/null
|
| +++ b/packages/polymer_expressions/benchmark/eval.dart
|
| @@ -0,0 +1,59 @@
|
| +// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
|
| +// for details. All rights reserved. Use of this source code is governed by a
|
| +// BSD-style license that can be found in the LICENSE file.
|
| +
|
| +library polymer_expressions.benchmark.eval;
|
| +
|
| +import 'package:benchmark_harness/benchmark_harness.dart';
|
| +import 'package:polymer_expressions/parser.dart' show parse;
|
| +import 'package:polymer_expressions/eval.dart' show eval, Scope;
|
| +
|
| +class Foo {
|
| + final Bar bar;
|
| + Foo(this.bar);
|
| +}
|
| +
|
| +class Bar {
|
| + String baz;
|
| + Bar(this.baz);
|
| +}
|
| +
|
| +class EvalBenchmark extends BenchmarkBase {
|
| + final expr;
|
| + final scope;
|
| +
|
| + EvalBenchmark(String name, String expr, {Object model, Map variables})
|
| + : expr = parse(expr),
|
| + scope = new Scope(model: model, variables: variables),
|
| + super('$name: $expr ');
|
| +
|
| + run() {
|
| + var value = eval(expr, scope);
|
| + }
|
| +
|
| +}
|
| +
|
| +double total = 0.0;
|
| +
|
| +benchmark(String name, String expr, {Object model, Map variables}) {
|
| + var score = new EvalBenchmark(name, expr, model: model, variables: variables)
|
| + .measure();
|
| + print("$name $expr: $score us");
|
| + total += score;
|
| +}
|
| +
|
| +main() {
|
| +
|
| + benchmark('Constant', '1');
|
| + benchmark('Top-level Name', 'foo',
|
| + variables: {'foo': new Foo(new Bar('hello'))});
|
| + benchmark('Model field', 'bar',
|
| + model: new Foo(new Bar('hello')));
|
| + benchmark('Path', 'foo.bar.baz',
|
| + variables: {'foo': new Foo(new Bar('hello'))});
|
| + benchmark('Map', 'm["foo"]',
|
| + variables: {'m': {'foo': 1}});
|
| + benchmark('Equality', '"abc" == "123"');
|
| + print('total: $total us');
|
| +
|
| +}
|
|
|