| // 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' show clampDouble; | |
| import '../common.dart'; | |
| const int _kBatchSize = 100000; | |
| const int _kNumIterations = 1000; | |
| Future<void> execute() async { | |
| assert(false, "Don't run benchmarks in debug mode! Use 'flutter run --release'."); | |
| final printer = BenchmarkResultPrinter(); | |
| final watch = Stopwatch(); | |
| { | |
| final clampDoubleValues = <double>[]; | |
| for (var j = 0; j < _kNumIterations; ++j) { | |
| double tally = 0; | |
| watch.reset(); | |
| watch.start(); | |
| for (var i = 0; i < _kBatchSize; i += 1) { | |
| tally += clampDouble(-1.0, 0.0, 1.0); | |
| tally += clampDouble(2.0, 0.0, 1.0); | |
| tally += clampDouble(0.0, 0.0, 1.0); | |
| tally += clampDouble(double.nan, 0.0, 1.0); | |
| } | |
| watch.stop(); | |
| clampDoubleValues.add(watch.elapsedMicroseconds.toDouble() / _kBatchSize); | |
| if (tally < 0.0) { | |
| print("This shouldn't happen."); | |
| } | |
| } | |
| printer.addResultStatistics( | |
| description: 'clamp - clampDouble', | |
| values: clampDoubleValues, | |
| unit: 'us per iteration', | |
| name: 'clamp_clampDouble', | |
| ); | |
| } | |
| { | |
| final doubleClampValues = <double>[]; | |
| for (var j = 0; j < _kNumIterations; ++j) { | |
| double tally = 0; | |
| watch.reset(); | |
| watch.start(); | |
| for (var i = 0; i < _kBatchSize; i += 1) { | |
| tally += -1.0.clamp(0.0, 1.0); | |
| tally += 2.0.clamp(0.0, 1.0); | |
| tally += 0.0.clamp(0.0, 1.0); | |
| tally += double.nan.clamp(0.0, 1.0); | |
| } | |
| watch.stop(); | |
| doubleClampValues.add(watch.elapsedMicroseconds.toDouble() / _kBatchSize); | |
| if (tally < 0.0) { | |
| print("This shouldn't happen."); | |
| } | |
| } | |
| printer.addResultStatistics( | |
| description: 'clamp - Double.clamp', | |
| values: doubleClampValues, | |
| unit: 'us per iteration', | |
| name: 'clamp_Double_clamp', | |
| ); | |
| } | |
| printer.printToStdout(); | |
| } |