Index: packages/observe/benchmark/index.dart |
diff --git a/packages/observe/benchmark/index.dart b/packages/observe/benchmark/index.dart |
deleted file mode 100644 |
index 781e0aad47a09a11e8de03ec25cc603e54469576..0000000000000000000000000000000000000000 |
--- a/packages/observe/benchmark/index.dart |
+++ /dev/null |
@@ -1,168 +0,0 @@ |
-// 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 observe.test.benchmark.index; |
- |
-import 'dart:async'; |
-import 'dart:html'; |
-import 'package:benchmark_harness/benchmark_harness.dart'; |
-import 'package:chart/chart.dart'; |
-import 'package:observe/mirrors_used.dart'; // Makes output smaller. |
-import 'package:smoke/mirrors.dart'; |
-import 'object_benchmark.dart'; |
-import 'setup_object_benchmark.dart'; |
-import 'observable_list_benchmark.dart'; |
-import 'setup_observable_list_benchmark.dart'; |
-import 'path_benchmark.dart'; |
-import 'setup_path_benchmark.dart'; |
- |
-/// Benchmark names to factory functions. |
-typedef BenchmarkBase BenchmarkFactory( |
- int objectCount, int mutationCount, String config); |
-final Map<String, BenchmarkFactory> benchmarkFactories = { |
- 'ObjectBenchmark': (int o, int m, String c) => new ObjectBenchmark(o, m, c), |
- 'SetupObjectBenchmark': |
- (int o, int m, String c) => new SetupObjectBenchmark(o, c), |
- 'ObservableListBenchmark': |
- (int o, int m, String c) => new ObservableListBenchmark(o, m, c), |
- 'SetupObservableListBenchmark': |
- (int o, int m, String c) => new SetupObservableListBenchmark(o, c), |
- 'PathBenchmark': (int o, int m, String c) => new PathBenchmark(o, m, c), |
- 'SetupPathBenchmark': |
- (int o, int m, String c) => new SetupPathBenchmark(o, c), |
-}; |
- |
-/// Benchmark names to possible configs. |
-final Map<String, List<String>> benchmarkConfigs = { |
- 'ObjectBenchmark': [], |
- 'SetupObjectBenchmark': [], |
- 'ObservableListBenchmark': ['splice', 'update', 'push/pop', 'shift/unshift'], |
- 'SetupObservableListBenchmark': [], |
- 'PathBenchmark': ['leaf', 'root'], |
- 'SetupPathBenchmark': [], |
-}; |
- |
-Iterable<int> objectCounts; |
-Iterable<int> mutationCounts; |
- |
-final ButtonElement goButton = querySelector('#go'); |
-final InputElement objectCountInput = querySelector('#objectCountInput'); |
-final InputElement mutationCountInput = querySelector('#mutationCountInput'); |
-final SpanElement mutationCountWrapper = querySelector('#mutationCountWrapper'); |
-final SpanElement statusSpan = querySelector('#status'); |
-final DivElement canvasWrapper = querySelector('#canvasWrapper'); |
-final SelectElement benchmarkSelect = querySelector('#benchmarkSelect'); |
-final SelectElement configSelect = querySelector('#configSelect'); |
-final UListElement legendList = querySelector('#legendList'); |
-final List<List<String>> colors = [ |
- [0, 0, 255], |
- [138, 43, 226], |
- [165, 42, 42], |
- [100, 149, 237], |
- [220, 20, 60], |
- [184, 134, 11] |
-].map((rgb) => 'rgba(' + rgb.join(',') + ',.7)').toList(); |
- |
-main() { |
- // TODO(jakemac): Use a transformer to generate the smoke config so we can see |
- // how that affects the benchmark. |
- useMirrors(); |
- |
- benchmarkSelect.onChange.listen((_) => changeBenchmark()); |
- changeBenchmark(); |
- |
- goButton.onClick.listen((_) async { |
- canvasWrapper.children.clear(); |
- goButton.disabled = true; |
- goButton.text = 'Running...'; |
- legendList.text = ''; |
- objectCounts = |
- objectCountInput.value.split(',').map((val) => int.parse(val)); |
- |
- if (benchmarkSelect.value.startsWith('Setup')) { |
- mutationCounts = [0]; |
- } else { |
- mutationCounts = |
- mutationCountInput.value.split(',').map((val) => int.parse(val)); |
- } |
- |
- var i = 0; |
- mutationCounts.forEach((count) { |
- var li = document.createElement('li'); |
- li.text = '$count mutations.'; |
- li.style.color = colors[i % colors.length]; |
- legendList.append(li); |
- i++; |
- }); |
- |
- var results = []; |
- for (int objectCount in objectCounts) { |
- int x = 0; |
- for (int mutationCount in mutationCounts) { |
- statusSpan.text = |
- 'Testing: $objectCount objects with $mutationCount mutations'; |
- // Let the status text render before running the next benchmark. |
- await new Future(() {}); |
- var factory = benchmarkFactories[benchmarkSelect.value]; |
- var benchmark = factory(objectCount, mutationCount, configSelect.value); |
- // Divide by 10 because benchmark_harness returns the amount of time it |
- // took to run 10 times, not once :(. |
- var resultMicros = benchmark.measure() / 10; |
- |
- if (results.length <= x) results.add([]); |
- results[x].add(resultMicros / 1000); |
- x++; |
- } |
- } |
- |
- drawBenchmarks(results); |
- }); |
-} |
- |
-void drawBenchmarks(List<List<double>> results) { |
- var datasets = []; |
- for (int i = 0; i < results.length; i++) { |
- datasets.add({ |
- 'fillColor': 'rgba(255, 255, 255, 0)', |
- 'strokeColor': colors[i % colors.length], |
- 'pointColor': colors[i % colors.length], |
- 'pointStrokeColor': "#fff", |
- 'data': results[i], |
- }); |
- } |
- var data = { |
- 'labels': objectCounts.map((c) => '$c').toList(), |
- 'datasets': datasets, |
- }; |
- |
- new Line(data, {'bezierCurve': false,}).show(canvasWrapper); |
- goButton.disabled = false; |
- goButton.text = 'Run Benchmarks'; |
- statusSpan.text = ''; |
-} |
- |
-void changeBenchmark() { |
- var configs = benchmarkConfigs[benchmarkSelect.value]; |
- configSelect.text = ''; |
- configs.forEach((config) { |
- var option = document.createElement('option'); |
- option.text = config; |
- configSelect.append(option); |
- }); |
- |
- document.title = benchmarkSelect.value; |
- |
- // Don't show the configSelect if there are no configs. |
- if (configs.isEmpty) { |
- configSelect.style.display = 'none'; |
- } else { |
- configSelect.style.display = 'inline'; |
- } |
- |
- // Don't show the mutation counts box if running a Setup* benchmark. |
- if (benchmarkSelect.value.startsWith('Setup')) { |
- mutationCountWrapper.style.display = 'none'; |
- } else { |
- mutationCountWrapper.style.display = 'inline'; |
- } |
-} |