| // Copyright 2014 The Flutter Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| import 'package:flutter/foundation.dart'; |
| |
| import '../common.dart'; |
| |
| const int _kNumIterations = 10; |
| const int _kNumWarmUp = 100; |
| |
| class Data { |
| Data(this.value); |
| |
| Map<String, dynamic> toJson() => <String, dynamic>{ 'value': value }; |
| |
| final int value; |
| } |
| |
| List<Data> test(int length) { |
| return List<Data>.generate(length, |
| (int index) => Data(index * index)); |
| } |
| |
| Future<void> main() async { |
| assert(false, "Don't run benchmarks in debug mode! Use 'flutter run --release'."); |
| |
| // Warm up lap |
| for (int i = 0; i < _kNumWarmUp; i += 1) { |
| await compute(test, 10); |
| } |
| |
| final Stopwatch watch = Stopwatch(); |
| watch.start(); |
| for (int i = 0; i < _kNumIterations; i += 1) { |
| await compute(test, 1000000); |
| } |
| final int elapsedMicroseconds = watch.elapsedMicroseconds; |
| |
| final BenchmarkResultPrinter printer = BenchmarkResultPrinter(); |
| const double scale = 1000.0 / _kNumIterations; |
| printer.addResult( |
| description: 'compute', |
| value: elapsedMicroseconds * scale, |
| unit: 'ns per iteration', |
| name: 'compute_iteration', |
| ); |
| printer.printToStdout(); |
| } |