| // 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/services.dart'; |
| |
| import '../common.dart'; |
| |
| const int _kNumIterations = 100000; |
| |
| void main() { |
| assert(false, |
| "Don't run benchmarks in debug mode! Use 'flutter run --release'."); |
| final BenchmarkResultPrinter printer = BenchmarkResultPrinter(); |
| |
| const StandardMethodCodec codec = StandardMethodCodec(); |
| final Stopwatch watch = Stopwatch(); |
| const String methodName = 'something'; |
| watch.start(); |
| for (int i = 0; i < _kNumIterations; i += 1) { |
| codec.encodeMethodCall(const MethodCall(methodName)); |
| } |
| watch.stop(); |
| |
| printer.addResult( |
| description: 'StandardMethodCodec null', |
| value: watch.elapsedMicroseconds.toDouble() / _kNumIterations, |
| unit: 'us per iteration', |
| name: 'StandardMethodCodec_null', |
| ); |
| |
| watch.reset(); |
| watch.start(); |
| for (int i = 0; i < _kNumIterations; i += 1) { |
| codec.encodeMethodCall(const MethodCall(methodName, 12345)); |
| } |
| watch.stop(); |
| |
| printer.addResult( |
| description: 'StandardMethodCodec int', |
| value: watch.elapsedMicroseconds.toDouble() / _kNumIterations, |
| unit: 'us per iteration', |
| name: 'StandardMethodCodec_int', |
| ); |
| |
| watch.reset(); |
| |
| watch.start(); |
| for (int i = 0; i < _kNumIterations; i += 1) { |
| codec.encodeMethodCall( |
| const MethodCall(methodName, 'This is a performance test.')); |
| } |
| watch.stop(); |
| |
| printer.addResult( |
| description: 'StandardMethodCodec string', |
| value: watch.elapsedMicroseconds.toDouble() / _kNumIterations, |
| unit: 'us per iteration', |
| name: 'StandardMethodCodec_string', |
| ); |
| |
| watch.reset(); |
| watch.start(); |
| for (int i = 0; i < _kNumIterations; i += 1) { |
| codec.encodeMethodCall(const MethodCall( |
| methodName, <Object>[1234, 'This is a performance test.', 1.25, true])); |
| } |
| watch.stop(); |
| |
| printer.addResult( |
| description: 'StandardMethodCodec heterogenous list', |
| value: watch.elapsedMicroseconds.toDouble() / _kNumIterations, |
| unit: 'us per iteration', |
| name: 'StandardMethodCodec_heterogenous_list', |
| ); |
| |
| watch.reset(); |
| watch.start(); |
| for (int i = 0; i < _kNumIterations; i += 1) { |
| codec.encodeMethodCall(const MethodCall(methodName, <String, Object>{ |
| 'integer': 1234, |
| 'string': 'This is a performance test.', |
| 'float': 1.25, |
| 'boolean': true, |
| })); |
| } |
| watch.stop(); |
| |
| printer.addResult( |
| description: 'StandardMethodCodec heterogenous map', |
| value: watch.elapsedMicroseconds.toDouble() / _kNumIterations, |
| unit: 'us per iteration', |
| name: 'StandardMethodCodec_heterogenous_map', |
| ); |
| |
| watch.reset(); |
| |
| printer.printToStdout(); |
| } |