Skip to content

[engine] scrolling perfomance regression with merged platform/UI thread. #157827

@NabilaWorks

Description

@NabilaWorks

Steps to reproduce

  1. flutter channel master
  2. flutter run --profile
  3. Scroll vigorously up and down

Reproducible on master TOT at the moment : 3ed40f0

The master commit that caused it : 81e418d

Reproducible on beta as well 2e2c358

The issue got merged here : #154020

Last good master commit : a4b0d97

Not reproducible on stable 3.24.4

Code sample

Code sample
import 'package:flutter/material.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        body: SingleChildScrollView(
          physics: const BouncingScrollPhysics(parent: AlwaysScrollableScrollPhysics()),
          scrollDirection: Axis.vertical,
          child: Stack(
            children: [
              const SizedBox(
                height: 1440,
                width: 1000,
              ),
              for (var i = 0; i < 100; i++)
                Positioned.fill(
                  top: i * 20,
                  child: Align(
                    alignment: Alignment.topCenter,
                    child: Container(
                      color: Colors.red,
                      height: 15,
                      child: Center(
                        child: Text(
                          '$i',
                          style: const TextStyle(
                            color: Colors.white,
                            fontSize: 11,
                          ),
                        ),
                      ),
                    ),
                  ),
                ),
            ],
          ),
        ),
      ),
    );
  }
}

Performance profiling on master channel

  • The issue still persists on the master channel

Timeline Traces

Timeline Traces JSON

dart_devtools_2024-10-29_21_26_05.195.json

Video demonstration

Video demonstration
bad-3ed40f003a.MP4
bad-81e418dd20.MP4
good-a4b0d973fb.MP4

What target platforms are you seeing this bug on?

iOS

OS/Browser name and version | Device information

iOS 18.1 (22B83) | iPhone 12 mini

Does the problem occur on emulator/simulator as well as on physical devices?

Unknown

Is the problem only reproducible with Impeller?

No

Logs

Logs
flutter create scrolling

Flutter Doctor output

Doctor output
[✓] Flutter (Channel master, 3.27.0-1.0.pre.292, on macOS 15.1 24B82 darwin-arm64, locale en-US)
    • Flutter version 3.27.0-1.0.pre.292 on channel master at /Users/nabila/fvm/versions/master
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 3ed40f003a (14 minutes ago), 2024-10-29 15:45:22 -0400
    • Engine revision 795b5492f1
    • Dart version 3.7.0 (build 3.7.0-78.0.dev)
    • DevTools version 2.40.1

Metadata

Metadata

Assignees

Labels

P1High-priority issues at the top of the work listfrom: performance templateIssues created via a performance issue templateteam-engineOwned by Engine teamtriaged-engineTriaged by Engine team

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions