Unverified Commit f0200f01 authored by JsouLiang's avatar JsouLiang Committed by GitHub

Add benchmark case for RasterCache (#103338)

parent 4c1d887e
...@@ -1396,6 +1396,17 @@ targets: ...@@ -1396,6 +1396,17 @@ targets:
task_name: color_filter_cache_perf__e2e_summary task_name: color_filter_cache_perf__e2e_summary
scheduler: luci scheduler: luci
- name: Linux_android raster_cache_use_memory_perf__e2e_summary
recipe: devicelab/devicelab_drone
presubmit: false
bringup: true
timeout: 60
properties:
tags: >
["devicelab","android","linux"]
task_name: raster_cache_use_memory_perf__e2e_summary
scheduler: luci
- name: Linux_android shader_mask_cache_perf__e2e_summary - name: Linux_android shader_mask_cache_perf__e2e_summary
recipe: devicelab/devicelab_drone recipe: devicelab/devicelab_drone
presubmit: false presubmit: false
......
...@@ -70,6 +70,7 @@ ...@@ -70,6 +70,7 @@
/dev/devicelab/bin/tasks/platform_views_scroll_perf__timeline_summary.dart @zanderso @flutter/engine /dev/devicelab/bin/tasks/platform_views_scroll_perf__timeline_summary.dart @zanderso @flutter/engine
/dev/devicelab/bin/tasks/plugin_dependencies_test.dart @jmagman @flutter/tool /dev/devicelab/bin/tasks/plugin_dependencies_test.dart @jmagman @flutter/tool
/dev/devicelab/bin/tasks/routing_test.dart @zanderso @flutter/tool /dev/devicelab/bin/tasks/routing_test.dart @zanderso @flutter/tool
/dev/devicelab/bin/tasks/raster_cache_use_memory_perf__e2e_summary.dart @flar @flutter/engine
/dev/devicelab/bin/tasks/textfield_perf__e2e_summary.dart @zanderso @flutter/engine /dev/devicelab/bin/tasks/textfield_perf__e2e_summary.dart @zanderso @flutter/engine
/dev/devicelab/bin/tasks/web_size__compile_test.dart @yjbanov @flutter/web /dev/devicelab/bin/tasks/web_size__compile_test.dart @yjbanov @flutter/web
/dev/devicelab/bin/tasks/opacity_peephole_col_of_rows_perf__e2e_summary.dart @flar @flutter/engine /dev/devicelab/bin/tasks/opacity_peephole_col_of_rows_perf__e2e_summary.dart @flar @flutter/engine
......
...@@ -21,6 +21,7 @@ const String kFadingChildAnimationRouteName = '/fading_child_animation'; ...@@ -21,6 +21,7 @@ const String kFadingChildAnimationRouteName = '/fading_child_animation';
const String kImageFilteredTransformAnimationRouteName = '/imagefiltered_transform_animation'; const String kImageFilteredTransformAnimationRouteName = '/imagefiltered_transform_animation';
const String kMultiWidgetConstructionRouteName = '/multi_widget_construction'; const String kMultiWidgetConstructionRouteName = '/multi_widget_construction';
const String kHeavyGridViewRouteName = '/heavy_gridview'; const String kHeavyGridViewRouteName = '/heavy_gridview';
const String kRasterCacheUseMemory = '/raster_cache_use_memory';
const String kShaderMaskCacheRouteName = '/shader_mask_cache'; const String kShaderMaskCacheRouteName = '/shader_mask_cache';
const String kSimpleScrollRouteName = '/simple_scroll'; const String kSimpleScrollRouteName = '/simple_scroll';
const String kStackSizeRouteName = '/stack_size'; const String kStackSizeRouteName = '/stack_size';
......
...@@ -28,6 +28,7 @@ import 'src/opacity_peephole.dart'; ...@@ -28,6 +28,7 @@ import 'src/opacity_peephole.dart';
import 'src/picture_cache.dart'; import 'src/picture_cache.dart';
import 'src/picture_cache_complexity_scoring.dart'; import 'src/picture_cache_complexity_scoring.dart';
import 'src/post_backdrop_filter.dart'; import 'src/post_backdrop_filter.dart';
import 'src/raster_cache_use_memory.dart';
import 'src/shader_mask_cache.dart'; import 'src/shader_mask_cache.dart';
import 'src/simple_animation.dart'; import 'src/simple_animation.dart';
import 'src/simple_scroll.dart'; import 'src/simple_scroll.dart';
...@@ -67,6 +68,7 @@ class MacrobenchmarksApp extends StatelessWidget { ...@@ -67,6 +68,7 @@ class MacrobenchmarksApp extends StatelessWidget {
kImageFilteredTransformAnimationRouteName: (BuildContext context) => const FilteredChildAnimationPage(FilterType.rotateFilter), kImageFilteredTransformAnimationRouteName: (BuildContext context) => const FilteredChildAnimationPage(FilterType.rotateFilter),
kMultiWidgetConstructionRouteName: (BuildContext context) => const MultiWidgetConstructTable(10, 20), kMultiWidgetConstructionRouteName: (BuildContext context) => const MultiWidgetConstructTable(10, 20),
kHeavyGridViewRouteName: (BuildContext context) => const HeavyGridViewPage(), kHeavyGridViewRouteName: (BuildContext context) => const HeavyGridViewPage(),
kRasterCacheUseMemory: (BuildContext context) => const RasterCacheUseMemory(),
kShaderMaskCacheRouteName: (BuildContext context) => const ShaderMaskCachePage(), kShaderMaskCacheRouteName: (BuildContext context) => const ShaderMaskCachePage(),
kSimpleScrollRouteName: (BuildContext context) => const SimpleScroll(), kSimpleScrollRouteName: (BuildContext context) => const SimpleScroll(),
kStackSizeRouteName: (BuildContext context) => const StackSizePage(), kStackSizeRouteName: (BuildContext context) => const StackSizePage(),
...@@ -193,6 +195,13 @@ class HomePage extends StatelessWidget { ...@@ -193,6 +195,13 @@ class HomePage extends StatelessWidget {
Navigator.pushNamed(context, kColorFilterCacheRouteName); Navigator.pushNamed(context, kColorFilterCacheRouteName);
}, },
), ),
ElevatedButton(
key: const Key(kRasterCacheUseMemory),
child: const Text('RasterCache Use Memory'),
onPressed: () {
Navigator.pushNamed(context, kRasterCacheUseMemory);
},
),
ElevatedButton( ElevatedButton(
key: const Key(kShaderMaskCacheRouteName), key: const Key(kShaderMaskCacheRouteName),
child: const Text('Shader Mask Cache'), child: const Text('Shader Mask Cache'),
......
// 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 'dart:async';
import 'dart:ui';
import 'package:flutter/material.dart';
class RasterCacheUseMemory extends StatefulWidget {
const RasterCacheUseMemory({super.key});
@override
State<RasterCacheUseMemory> createState() => _RasterCacheUseMemoryState();
}
class _RasterCacheUseMemoryState extends State<RasterCacheUseMemory>
with TickerProviderStateMixin {
final ScrollController _controller = ScrollController();
@override
void initState() {
super.initState();
_controller.addListener(() {
if (_controller.offset < 5) {
_controller.animateTo(20,
duration: const Duration(milliseconds: 1000), curve: Curves.ease);
} else if (_controller.offset >= 19) {
_controller.animateTo(0,
duration: const Duration(milliseconds: 1000), curve: Curves.ease);
}
});
Timer(const Duration(milliseconds: 1000), () {
_controller.animateTo(150,
duration: const Duration(milliseconds: 1000), curve: Curves.ease);
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.lightBlue,
body: ListView(
controller: _controller,
children: <Widget>[
RepaintBoundary(
child: ImageFiltered(
imageFilter: ImageFilter.blur(
sigmaX: 4,
sigmaY: 4,
),
child: RepaintBoundary(
child: Container(
width: 50,
height: 50,
color: Colors.red,
),
),
),
),
ShaderMask(
shaderCallback: (Rect bounds) {
return const RadialGradient(
center: Alignment.topLeft,
radius: 1.0,
colors: <Color>[Colors.yellow, Colors.deepOrange],
tileMode: TileMode.mirror,
).createShader(bounds);
},
blendMode: BlendMode.srcATop,
child: Opacity(
opacity: 0.5,
child: Column(
children: <Widget>[
ImageFiltered(
imageFilter: ImageFilter.blur(
sigmaX: 4,
sigmaY: 4,
),
child: Row(
children: <Widget>[
ImageFiltered(
imageFilter: ImageFilter.blur(
sigmaX: 4,
sigmaY: 4,
),
child: RepaintBoundary(
child: Container(
margin: const EdgeInsets.fromLTRB(10, 5, 10, 5),
decoration: BoxDecoration(
color: Colors.white70,
boxShadow: const <BoxShadow>[
BoxShadow(
blurRadius: 5.0,
),
],
borderRadius: BorderRadius.circular(5.0),
),
child: const FlutterLogo(
size: 50,
),
),
),
)
],
),
)
],
),
),
),
const RepaintBoundary(
child: FlutterLogo(
size: 50,
),
),
Container(
height: 800,
),
],
),
);
}
@override
void dispose() {
_controller.dispose();
super.dispose();
}
}
// 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:macrobenchmarks/common.dart';
import 'util.dart';
void main() {
macroPerfTestE2E(
'raster_cache_use_memory_perf',
kRasterCacheUseMemory,
pageDelay: const Duration(seconds: 1),
duration: const Duration(seconds: 10),
);
}
// 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 'dart:async';
import 'package:flutter_devicelab/framework/devices.dart';
import 'package:flutter_devicelab/framework/framework.dart';
import 'package:flutter_devicelab/tasks/perf_tests.dart';
Future<void> main() async {
deviceOperatingSystem = DeviceOperatingSystem.android;
await task(createRasterCacheUseMemoryPerfE2ETest());
}
...@@ -384,6 +384,13 @@ TaskFunction createColorFilterCachePerfE2ETest() { ...@@ -384,6 +384,13 @@ TaskFunction createColorFilterCachePerfE2ETest() {
).run; ).run;
} }
TaskFunction createRasterCacheUseMemoryPerfE2ETest() {
return PerfTest.e2e(
'${flutterDirectory.path}/dev/benchmarks/macrobenchmarks',
'test/raster_cache_use_memory_perf_e2e.dart',
).run;
}
TaskFunction createShaderMaskCachePerfE2ETest() { TaskFunction createShaderMaskCachePerfE2ETest() {
return PerfTest.e2e( return PerfTest.e2e(
'${flutterDirectory.path}/dev/benchmarks/macrobenchmarks', '${flutterDirectory.path}/dev/benchmarks/macrobenchmarks',
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment