Index: code_transformers/lib/src/async_benchmark_base.dart |
diff --git a/code_transformers/lib/src/async_benchmark_base.dart b/code_transformers/lib/src/async_benchmark_base.dart |
deleted file mode 100644 |
index 0d9966f5d50e7d63bb8cd524756689318212eadd..0000000000000000000000000000000000000000 |
--- a/code_transformers/lib/src/async_benchmark_base.dart |
+++ /dev/null |
@@ -1,71 +0,0 @@ |
-// Copyright (c) 2014, 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 code_transformers.src.async_benchmark_base; |
- |
-import 'dart:async'; |
- |
-/// An adaptation of [BenchmarkBase] from the `benchmark_harness` package that |
-/// works for async benchmarks. |
-/// TODO(jakemac): Get this merged into `benchmark_harness`. |
-class AsyncBenchmarkBase { |
- // Empty constructor. |
- const AsyncBenchmarkBase(); |
- |
- // The benchmark code. |
- // This function is not used, if both [warmup] and [exercise] are overwritten. |
- Future run() => new Future.value(); |
- |
- // Runs a short version of the benchmark. By default invokes [run] once. |
- Future warmup() => run(); |
- |
- // Exercices the benchmark. By default invokes [run] 10 times. |
- Future exercise({int iterations: 10}) { |
- var i = 0; |
- return Future.doWhile(() { |
- if (i >= iterations) return new Future.value(false); |
- i++; |
- return run().then((_) => true); |
- }); |
- } |
- |
- // Not measured setup code executed prior to the benchmark runs. |
- Future setup() => new Future.value(); |
- |
- // Not measures teardown code executed after the benchark runs. |
- Future teardown() => new Future.value(); |
- |
- // Measures the score for this benchmark by executing it repeatedly until |
- // time minimum has been reached. |
- static Future<double> measureFor(Function f, int minimumMillis) { |
- int minimumMicros = minimumMillis * 1000; |
- int iter = 0; |
- Stopwatch watch = new Stopwatch(); |
- watch.start(); |
- int elapsed = 0; |
- return Future.doWhile(() { |
- if (elapsed > minimumMicros) return new Future.value(false); |
- return f().then((_) { |
- elapsed = watch.elapsedMicroseconds; |
- iter++; |
- return true; |
- }); |
- }).then((_) => elapsed / iter); |
- } |
- |
- // Measures the average time to call `run` once and returns it. |
- Future<double> measure({int iterations: 10}) { |
- // Unmeasured setup code. |
- return setup().then((_) { |
- // Warmup for at least 100ms. Discard result. |
- return measureFor(() => warmup(), 100); |
- }).then((_) { |
- // Run the benchmark for at least 2000ms. |
- return measureFor(() => exercise(iterations: iterations), 2000); |
- }).then((result) { |
- // Tear down the test (unmeasured) and return the result divided by the |
- // number of iterations. |
- return teardown().then((_) => result / iterations); |
- }); |
- } |
-} |