diff --git a/dev/benchmarks/microbenchmarks/lib/foundation/platform_asset_bundle.dart b/dev/benchmarks/microbenchmarks/lib/foundation/platform_asset_bundle.dart new file mode 100644 index 000000000000..41fb6cbe3d7f --- /dev/null +++ b/dev/benchmarks/microbenchmarks/lib/foundation/platform_asset_bundle.dart @@ -0,0 +1,47 @@ +// 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' show PlatformAssetBundle; +import 'package:flutter/widgets.dart'; + +import '../common.dart'; + +const int _kBatchSize = 100; +const int _kNumIterations = 100; + +void main() async { + assert(false, + "Don't run benchmarks in debug mode! Use 'flutter run --release'."); + final BenchmarkResultPrinter printer = BenchmarkResultPrinter(); + WidgetsFlutterBinding.ensureInitialized(); + final Stopwatch watch = Stopwatch(); + final PlatformAssetBundle bundle = PlatformAssetBundle(); + + final List values = []; + for (int j = 0; j < _kNumIterations; ++j) { + double tally = 0; + watch.reset(); + watch.start(); + for (int i = 0; i < _kBatchSize; i += 1) { + // Note: We don't load images like this. PlatformAssetBundle is used for + // other assets (like Rive animations). We are using an image because it's + // conveniently sized and available for the test. + tally += (await bundle.load('packages/flutter_gallery_assets/places/india_pondicherry_salt_farm.png')).lengthInBytes; + } + watch.stop(); + values.add(watch.elapsedMicroseconds.toDouble() / _kBatchSize); + if (tally < 0.0) { + print("This shouldn't happen."); + } + } + + printer.addResultStatistics( + description: 'PlatformAssetBundle.load 1MB', + values: values, + unit: 'us per iteration', + name: 'PlatformAssetBundle_load_1MB', + ); + + printer.printToStdout(); +} diff --git a/dev/devicelab/lib/tasks/microbenchmarks.dart b/dev/devicelab/lib/tasks/microbenchmarks.dart index af83d94f7e3d..b957ae6fd2fd 100644 --- a/dev/devicelab/lib/tasks/microbenchmarks.dart +++ b/dev/devicelab/lib/tasks/microbenchmarks.dart @@ -62,6 +62,7 @@ TaskFunction createMicrobenchmarkTask() { ...await runMicrobench('lib/foundation/all_elements_bench.dart'), ...await runMicrobench('lib/foundation/clamp.dart'), ...await runMicrobench('lib/foundation/change_notifier_bench.dart'), + ...await runMicrobench('lib/foundation/platform_asset_bundle.dart'), ...await runMicrobench('lib/foundation/standard_method_codec_bench.dart'), ...await runMicrobench('lib/foundation/standard_message_codec_bench.dart'), ...await runMicrobench('lib/foundation/timeline_bench.dart'),