mirror of
https://github.com/flutter/flutter
synced 2024-10-01 05:54:08 +00:00
Added benchmark for early removal of unused raster cache entris mecha… (#107918)
This commit is contained in:
parent
199cb2f5e6
commit
1919167540
10
.ci.yaml
10
.ci.yaml
|
@ -1364,6 +1364,16 @@ targets:
|
|||
["devicelab", "android", "linux"]
|
||||
task_name: color_filter_cache_perf__e2e_summary
|
||||
|
||||
- name: Linux_android color_filter_with_unstable_child_perf__e2e_summary
|
||||
recipe: devicelab/devicelab_drone
|
||||
presubmit: false
|
||||
bringup: true
|
||||
timeout: 60
|
||||
properties:
|
||||
tags: >
|
||||
["devicelab","android","linux"]
|
||||
task_name: color_filter_with_unstable_child_perf__e2e_summary
|
||||
|
||||
- name: Linux_android raster_cache_use_memory_perf__e2e_summary
|
||||
recipe: devicelab/devicelab_drone
|
||||
presubmit: false
|
||||
|
|
|
@ -24,6 +24,7 @@
|
|||
/dev/devicelab/bin/tasks/codegen_integration.dart @zanderso @flutter/tool
|
||||
/dev/devicelab/bin/tasks/clipper_cache_perf__e2e_summary.dart @flar @flutter/engine
|
||||
/dev/devicelab/bin/tasks/color_filter_and_fade_perf__e2e_summary.dart @zanderso @flutter/engine
|
||||
/dev/devicelab/bin/tasks/color_filter_with_unstable_child_perf__e2e_summary.dart @flar @flutter/engine
|
||||
/dev/devicelab/bin/tasks/shader_mask_cache_perf__e2e_summary.dart @flar @flutter/engine
|
||||
/dev/devicelab/bin/tasks/color_filter_cache_perf__e2e_summary.dart @flar @flutter/engine
|
||||
/dev/devicelab/bin/tasks/complex_layout_android__compile.dart @zanderso @flutter/tool
|
||||
|
|
|
@ -17,6 +17,7 @@ const String kAnimatedPlaceholderRouteName = '/animated_placeholder';
|
|||
const String kClipperCacheRouteName = '/clipper_cache';
|
||||
const String kColorFilterAndFadeRouteName = '/color_filter_and_fade';
|
||||
const String kColorFilterCacheRouteName = '/color_filter_cache';
|
||||
const String kColorFilterWithUnstableChildName = '/color_filter_with_unstable_child';
|
||||
const String kFadingChildAnimationRouteName = '/fading_child_animation';
|
||||
const String kImageFilteredTransformAnimationRouteName = '/imagefiltered_transform_animation';
|
||||
const String kMultiWidgetConstructionRouteName = '/multi_widget_construction';
|
||||
|
|
|
@ -14,6 +14,7 @@ import 'src/backdrop_filter.dart';
|
|||
import 'src/clipper_cache.dart';
|
||||
import 'src/color_filter_and_fade.dart';
|
||||
import 'src/color_filter_cache.dart';
|
||||
import 'src/color_filter_with_unstable_child.dart';
|
||||
import 'src/cubic_bezier.dart';
|
||||
import 'src/cull_opacity.dart';
|
||||
import 'src/filtered_child_animation.dart';
|
||||
|
@ -64,6 +65,7 @@ class MacrobenchmarksApp extends StatelessWidget {
|
|||
kClipperCacheRouteName: (BuildContext context) => const ClipperCachePage(),
|
||||
kColorFilterAndFadeRouteName: (BuildContext context) => const ColorFilterAndFadePage(),
|
||||
kColorFilterCacheRouteName: (BuildContext context) => const ColorFilterCachePage(),
|
||||
kColorFilterWithUnstableChildName: (BuildContext context) => const ColorFilterWithUnstableChildPage(),
|
||||
kFadingChildAnimationRouteName: (BuildContext context) => const FilteredChildAnimationPage(FilterType.opacity),
|
||||
kImageFilteredTransformAnimationRouteName: (BuildContext context) => const FilteredChildAnimationPage(FilterType.rotateFilter),
|
||||
kMultiWidgetConstructionRouteName: (BuildContext context) => const MultiWidgetConstructTable(10, 20),
|
||||
|
@ -195,6 +197,13 @@ class HomePage extends StatelessWidget {
|
|||
Navigator.pushNamed(context, kColorFilterCacheRouteName);
|
||||
},
|
||||
),
|
||||
ElevatedButton(
|
||||
key: const Key(kColorFilterWithUnstableChildName),
|
||||
child: const Text('Color Filter with Ustable Child'),
|
||||
onPressed: () {
|
||||
Navigator.pushNamed(context, kColorFilterWithUnstableChildName);
|
||||
},
|
||||
),
|
||||
ElevatedButton(
|
||||
key: const Key(kRasterCacheUseMemory),
|
||||
child: const Text('RasterCache Use Memory'),
|
||||
|
|
|
@ -0,0 +1,54 @@
|
|||
// 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/material.dart';
|
||||
|
||||
class ColorFilterWithUnstableChildPage extends StatefulWidget {
|
||||
const ColorFilterWithUnstableChildPage({super.key});
|
||||
|
||||
@override
|
||||
State<StatefulWidget> createState() => _ColorFilterWithUnstableChildPageState();
|
||||
}
|
||||
|
||||
class _ColorFilterWithUnstableChildPageState extends State<ColorFilterWithUnstableChildPage> with SingleTickerProviderStateMixin {
|
||||
late Animation<double> _offsetY;
|
||||
late AnimationController _controller;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
_controller = AnimationController(vsync: this, duration: const Duration(seconds: 2));
|
||||
_offsetY = Tween<double>(begin: 0, end: -1000.0).animate(_controller);
|
||||
_controller.repeat();
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
_controller.dispose();
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return AnimatedBuilder(
|
||||
animation: _offsetY,
|
||||
builder: (BuildContext context, Widget? child) {
|
||||
return Stack(children: List<Widget>.generate(50, (int i) => Positioned(
|
||||
left: 0,
|
||||
top: (200 * i).toDouble() + _offsetY.value,
|
||||
child: ColorFiltered(
|
||||
colorFilter: ColorFilter.mode(Colors.green[300]!, BlendMode.luminosity),
|
||||
child: RepaintBoundary(
|
||||
child: Container(
|
||||
// Slightly change width to invalidate raster cache.
|
||||
width: 1000 - (_offsetY.value / 100),
|
||||
height: 100, color: Colors.red,
|
||||
),
|
||||
),
|
||||
),
|
||||
)));
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
// 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';
|
||||
|
||||
Future<void> main() async {
|
||||
macroPerfTestE2E(
|
||||
'color_filter_with_unstable_child_perf',
|
||||
kColorFilterWithUnstableChildName,
|
||||
pageDelay: const Duration(seconds: 1),
|
||||
duration: const Duration(seconds: 10),
|
||||
);
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
// 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_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(createColorFilterWithUnstableChildPerfE2ETest());
|
||||
}
|
|
@ -384,6 +384,13 @@ TaskFunction createColorFilterCachePerfE2ETest() {
|
|||
).run;
|
||||
}
|
||||
|
||||
TaskFunction createColorFilterWithUnstableChildPerfE2ETest() {
|
||||
return PerfTest.e2e(
|
||||
'${flutterDirectory.path}/dev/benchmarks/macrobenchmarks',
|
||||
'test/color_filter_with_unstable_child_perf_e2e.dart',
|
||||
).run;
|
||||
}
|
||||
|
||||
TaskFunction createRasterCacheUseMemoryPerfE2ETest() {
|
||||
return PerfTest.e2e(
|
||||
'${flutterDirectory.path}/dev/benchmarks/macrobenchmarks',
|
||||
|
|
Loading…
Reference in a new issue