// 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(); }