diff --git a/dev/benchmarks/microbenchmarks/README.md b/dev/benchmarks/microbenchmarks/README.md index 82f0ecb07e6..42e45c1427a 100644 --- a/dev/benchmarks/microbenchmarks/README.md +++ b/dev/benchmarks/microbenchmarks/README.md @@ -13,3 +13,10 @@ flutter run --release lib/stocks/layout_bench.dart ``` The results should be in the device logs. + +### Avoid changing names of the benchmarks + +Each microbenchmark is identified by a name, for example, +"catmullrom_transform_iteration". Changing the name of an existing +microbenchmarks will effectively remove the old benchmark and create a new one, +losing the historical data associated with the old benchmark in the process. diff --git a/dev/benchmarks/microbenchmarks/lib/gestures/velocity_tracker_bench.dart b/dev/benchmarks/microbenchmarks/lib/gestures/velocity_tracker_bench.dart index b4b7e0644b9..fbce25191f2 100644 --- a/dev/benchmarks/microbenchmarks/lib/gestures/velocity_tracker_bench.dart +++ b/dev/benchmarks/microbenchmarks/lib/gestures/velocity_tracker_bench.dart @@ -9,15 +9,25 @@ import 'data/velocity_tracker_data.dart'; const int _kNumIters = 10000; +class TrackerBenchmark { + TrackerBenchmark({ this.name, this.tracker }); + + final VelocityTracker tracker; + final String name; +} + void main() { assert(false, "Don't run benchmarks in checked mode! Use 'flutter run --release'."); final BenchmarkResultPrinter printer = BenchmarkResultPrinter(); - final List trackers = [VelocityTracker(), IOSScrollViewFlingVelocityTracker()]; + final List benchmarks = [ + TrackerBenchmark(name: 'velocity_tracker_iteration', tracker: VelocityTracker()), + TrackerBenchmark(name: 'velocity_tracker_iteration_ios_fling', tracker: IOSScrollViewFlingVelocityTracker()), + ]; final Stopwatch watch = Stopwatch(); - for (final VelocityTracker tracker in trackers) { - final String trackerType = tracker.runtimeType.toString(); - print('$trackerType benchmark...'); + for (final TrackerBenchmark benchmark in benchmarks) { + print('${benchmark.name} benchmark...'); + final VelocityTracker tracker = benchmark.tracker; watch.reset(); watch.start(); for (int i = 0; i < _kNumIters; i += 1) { @@ -30,10 +40,10 @@ void main() { } watch.stop(); printer.addResult( - description: 'Velocity tracker: $trackerType', + description: 'Velocity tracker: ${tracker.runtimeType}', value: watch.elapsedMicroseconds / _kNumIters, unit: 'µs per iteration', - name: 'velocity_tracker_iteration_$trackerType', + name: benchmark.name, ); }