Repository: flutter
Issue: Severe Performance issue rendering Emoji's on first run.
Labels: framework,c: performance,d: api docs,a: typography,P2,team-framework,triaged-framework

note: Its worse in release mode. I guess because everything is fast but that first run rendering the emoji slows everything around it.

Very bad performance when navigating to a listview with emoji text when on the first run of the application. Really pisses me off personally so if i was an end user of my application which cant render emoji without screen lag/janks**(first-run)**. I would uninstall my own app and write a 1 star review with some old school language.

I can run computations and do complex processing while maintaining somewhat decent fluid animation. One bloody emoji ruins the whole experience.

Temporary fix: I render an emoji temporarily on app start to shock the framework. 
Tested on Motorola x4, iPhone SE. Performance issue can be seen in simulator as well with performance overlay set to true.

Problem has been here since flutter 1.0.0 from my memory.

Here is sample code that you can run on your physical and or simulator devices.

```
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';

void main() {
  runApp(TestEmoji());
}

class TestEmoji extends StatelessWidget {

  @override
  Widget build(BuildContext context){
    return MaterialApp(
      showPerformanceOverlay: true,
      home: Builder(
        builder: (context) => Center(
          child: RaisedButton(
            color: Colors.blue,
            child: const Text("Navigate to emoji listview", style: TextStyle(fontSize: 17,color: Colors.white),),
            onPressed: (){
              Navigator.push(context, CupertinoPageRoute(
                builder: (context) => TestText()
              ));
            },
          ),
        ),
      )
    );
  }
}
class TestText extends StatefulWidget{
  @override
  _TestText createState() => _TestText();
}

class _TestText extends State<TestText> {
  List<String> items = ["🗺️🔥🥺😊😍🔥😊🤔❤️👍🥰","😍🔥😊🤔❤️👍🥰","😍🔥😊","😍🔥😊","😍🔥😊","😍🔥😊🤔❤️👍🥰","😍🔥😊🤔❤️👍🥰"]; //init list of items
  List<String> textItems = ["Test Message, lets see how this performs","Test Message, lets see how this performs","Test Message, lets see how this performs","Test Message, lets see how this performs","Test Message, lets see how this performs","Test Message, lets see how this performs"];

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text("Emoji listview"),
        centerTitle: true,
      ),
      body: SafeArea(
        child: ListView.builder(
          reverse: true,
          itemCount: items.length,
          itemBuilder: (context, index){
            String item = items[index];
            return Padding(
              padding: const EdgeInsets.all(8.0),
              child: Center(
                  child: Text(item, style: const TextStyle(fontSize: 20),)
                ),
            );
          },
        ),
      ),
    );
  }
}
```
You can change: 
1) `itemCount: items.length` **to =>** `itemCount: textItems.length`
2) `String item = items[index]` **to =>** `String item = textItems[index]`

to compare the performance with a listview building text emoji and without emojis.

**Its somewhat 5 to 6 times slower rendering the listview with emojis on the first run compared to a listview without emojis**

This only happens on first run. It looks like we shock the whole framework and it performs well after the initial trauma. 

**Flutter doctor -v summary:**

```
[✓] Flutter (Channel stable, v1.9.1+hotfix.4, on Mac OS X 10.14.6 18G95, locale en-US)
    • Flutter version 1.9.1+hotfix.4 at /Users/fa****/Desktop/flutter
    • Framework revision cc949a8e8b (2 weeks ago), 2019-09-27 15:04:59 -0700
    • Engine revision b863200c37
    • Dart version 2.5.0

 
[✓] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
    • Android SDK at /Users/far***/Library/Android/sdk
    • Android NDK location not configured (optional; useful for native profiling support)
    • Platform android-28, build-tools 28.0.3
    • Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 1.8.0_202-release-1483-b49-5587405)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 11.0)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 11.0, Build version 11A420a
    • CocoaPods version 1.8.0

[✓] Android Studio (version 3.5)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin version 39.0.3
    • Dart plugin version 191.8423
    • Java version OpenJDK Runtime Environment (build 1.8.0_202-release-1483-b49-5587405)

[✓] Connected device (1 available)
    • iPhone 11 • 8F32A367-AE35-489B-94DA-A5E3AB66A050 • ios • com.apple.CoreSimulator.SimRuntime.iOS-13-0 (simulator)

• No issues found!
```