Added a benchmark for ImageCache (#33814)
* Add an image cache benchmark for a monochrome image
This commit is contained in:
parent
e0cb468865
commit
92bfc99132
@ -15,7 +15,7 @@ dependencies:
|
||||
# //packages/flutter_tools/lib/src/commands/update_packages.dart
|
||||
# and run
|
||||
# flutter update-packages --force-upgrade
|
||||
flutter_gallery_assets: 0.1.8
|
||||
flutter_gallery_assets: 0.1.9+2
|
||||
|
||||
async: 2.2.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
charcode: 1.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -82,4 +82,4 @@ flutter:
|
||||
- packages/flutter_gallery_assets/people/square/ali.png
|
||||
- packages/flutter_gallery_assets/places/india_chettinad_silk_maker.png
|
||||
|
||||
# PUBSPEC CHECKSUM: f69a
|
||||
# PUBSPEC CHECKSUM: e4f8
|
||||
|
@ -15,7 +15,7 @@ dependencies:
|
||||
# //packages/flutter_tools/lib/src/commands/update_packages.dart
|
||||
# and run
|
||||
# flutter update-packages --force-upgrade
|
||||
flutter_gallery_assets: 0.1.8
|
||||
flutter_gallery_assets: 0.1.9+2
|
||||
|
||||
async: 2.2.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
charcode: 1.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -79,4 +79,4 @@ dev_dependencies:
|
||||
flutter:
|
||||
uses-material-design: true
|
||||
|
||||
# PUBSPEC CHECKSUM: f69a
|
||||
# PUBSPEC CHECKSUM: e4f8
|
||||
|
@ -0,0 +1,17 @@
|
||||
// Copyright 2016 The Chromium 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 'dart:async';
|
||||
|
||||
import 'package:flutter_devicelab/framework/framework.dart';
|
||||
import 'package:flutter_devicelab/framework/utils.dart';
|
||||
import 'package:flutter_devicelab/tasks/perf_tests.dart';
|
||||
|
||||
Future<void> main() async {
|
||||
await task(MemoryTest(
|
||||
'${flutterDirectory.path}/examples/flutter_gallery',
|
||||
'test_memory/image_cache_memory.dart',
|
||||
'io.flutter.demo.gallery',
|
||||
).run);
|
||||
}
|
@ -527,6 +527,13 @@ tasks:
|
||||
stage: devicelab
|
||||
required_agent_capabilities: ["linux/android"]
|
||||
|
||||
flutter_gallery__image_cache_memory:
|
||||
description: >
|
||||
Measures memory usage for a list of large red squares in smaller containers.
|
||||
stage: devicelab
|
||||
required_agent_capabilities: ["linux/android"]
|
||||
flaky: true
|
||||
|
||||
analyzer_benchmark:
|
||||
description: >
|
||||
Measures the speed of Dart analyzer.
|
||||
|
@ -19,7 +19,7 @@ dependencies:
|
||||
shrine_images: 1.1.2
|
||||
|
||||
# Also update dev/benchmarks/complex_layout/pubspec.yaml
|
||||
flutter_gallery_assets: 0.1.8
|
||||
flutter_gallery_assets: 0.1.9+2
|
||||
|
||||
charcode: 1.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
meta: 1.1.6 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -88,6 +88,7 @@ flutter:
|
||||
assets:
|
||||
- lib/gallery/example_code.dart
|
||||
- packages/flutter_gallery_assets/people/ali_landscape.png
|
||||
- packages/flutter_gallery_assets/monochrome/red-square-1024x1024.png
|
||||
- packages/flutter_gallery_assets/logos/flutter_white/logo.png
|
||||
- packages/flutter_gallery_assets/logos/fortnightly/fortnightly_logo.png
|
||||
- packages/flutter_gallery_assets/videos/bee.mp4
|
||||
@ -253,4 +254,4 @@ flutter:
|
||||
- asset: packages/flutter_gallery_assets/fonts/merriweather/Merriweather-Regular.ttf
|
||||
- asset: packages/flutter_gallery_assets/fonts/merriweather/Merriweather-Light.ttf
|
||||
|
||||
# PUBSPEC CHECKSUM: 7863
|
||||
# PUBSPEC CHECKSUM: 35c1
|
||||
|
63
examples/flutter_gallery/test_memory/image_cache_memory.dart
Normal file
63
examples/flutter_gallery/test_memory/image_cache_memory.dart
Normal file
@ -0,0 +1,63 @@
|
||||
// Copyright 2016 The Chromium Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
// See //dev/devicelab/bin/tasks/flutter_gallery__image_cache_memory.dart
|
||||
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:flutter/widgets.dart';
|
||||
import 'package:flutter/scheduler.dart';
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
|
||||
// Once we provide an option for images to be resized to
|
||||
// fit the container, we should see a significant drop in
|
||||
// the amount of memory consumed by this benchmark.
|
||||
Future<void> main() async {
|
||||
const int numItems = 10;
|
||||
|
||||
runApp(Directionality(
|
||||
textDirection: TextDirection.ltr,
|
||||
child: ListView.builder(
|
||||
key: const Key('ImageList'),
|
||||
itemCount: numItems,
|
||||
itemBuilder: (BuildContext context, int position) {
|
||||
return Container(
|
||||
width: 200,
|
||||
height: 200,
|
||||
child: Center(
|
||||
child: Image.asset(
|
||||
'monochrome/red-square-1024x1024.png',
|
||||
package: 'flutter_gallery_assets',
|
||||
width: 100,
|
||||
height: 100,
|
||||
fit: BoxFit.contain,
|
||||
key: Key('image_$position'),
|
||||
),
|
||||
),
|
||||
);
|
||||
},
|
||||
),
|
||||
));
|
||||
|
||||
await SchedulerBinding.instance.endOfFrame;
|
||||
|
||||
// We are waiting for the GPU to rasterize a frame here. This makes this flaky,
|
||||
// we can rely on a more deterministic such as `Window.onReportTimings` once
|
||||
// https://github.com/flutter/flutter/issues/26154 is addressed.
|
||||
await Future<void>.delayed(const Duration(milliseconds: 50));
|
||||
debugPrint('==== MEMORY BENCHMARK ==== READY ====');
|
||||
|
||||
final WidgetController controller =
|
||||
LiveWidgetController(WidgetsBinding.instance);
|
||||
|
||||
debugPrint('Scrolling...');
|
||||
final Finder list = find.byKey(const Key('ImageList'));
|
||||
final Finder lastItem = find.byKey(const Key('image_${numItems - 1}'));
|
||||
do {
|
||||
await controller.drag(list, const Offset(0.0, -30.0));
|
||||
await Future<void>.delayed(const Duration(milliseconds: 20));
|
||||
} while (!lastItem.precache());
|
||||
|
||||
debugPrint('==== MEMORY BENCHMARK ==== DONE ====');
|
||||
}
|
@ -21,7 +21,7 @@ import '../runner/flutter_command.dart';
|
||||
/// package version in cases when upgrading to the latest breaks Flutter.
|
||||
const Map<String, String> _kManuallyPinnedDependencies = <String, String>{
|
||||
// Add pinned packages here.
|
||||
'flutter_gallery_assets': '0.1.8', // See //examples/flutter_gallery/pubspec.yaml
|
||||
'flutter_gallery_assets': '0.1.9+2', // See //examples/flutter_gallery/pubspec.yaml
|
||||
'build_daemon': '0.6.1', // Crashes at 1.0
|
||||
'test': '1.6.3', // | Tests are timing out at 1.6.4 https://github.com/flutter/flutter/issues/33823
|
||||
'test_api': '0.2.5', // |
|
||||
|
@ -19,7 +19,7 @@ dependencies:
|
||||
http: 0.12.0+2
|
||||
intl: 0.15.8
|
||||
json_rpc_2: 2.1.0
|
||||
linter: 0.1.90
|
||||
linter: 0.1.91
|
||||
meta: 1.1.6
|
||||
multicast_dns: 0.1.1
|
||||
mustache: 1.1.1
|
||||
@ -119,4 +119,4 @@ dartdoc:
|
||||
# Exclude this package from the hosted API docs.
|
||||
nodoc: true
|
||||
|
||||
# PUBSPEC CHECKSUM: ef94
|
||||
# PUBSPEC CHECKSUM: bf95
|
||||
|
Loading…
x
Reference in New Issue
Block a user