Update Kinerja Flutter pada tahun 2019
Oleh Yuqian Li dan Shams Zakhour
Kecepatan adalah pilar utama bagi Flutter. Artikel ini menyoroti peningkatan kinerja dari paruh kedua 2019 yang diterapkan oleh teman-teman dari komunitas Flutter. (Ya, memang terlambat, tetapi lebih baik terlambat daripada tidak sama sekali!)
Jika Anda telah membantu kinerja Flutter pada tahun 2020, kami akan membahasnya di postingan mendatang. Kami berharap bahwa dengan membagikan ini kepada Anda, komunitas Flutter, bisa menginspirasi Anda untuk membantu upaya kami!
Kuartal 4 (Okt-Des) 2019
Peningkatan yang terukur

70% pengurangan memori dalam scrolling cepat gambar besar
kontributor: liyuqian, dnfield, chinmaygarde
- PR 14265: Pembersihan IO thread GrContext
- PR 46184: Pengujian memori saat scrolling gambar besar dengan cepat
- Dasbor: Pengurangan 70% (400MB menjadi 120MB) dalam fast_scroll_large_images__memory diff-median
- Masalah 19558: Memori IO thread GrContext perlu dibersihkan
Pengurangan 40% dalam penggunaan CPU/GPU untuk animasi iOS sederhana
kontributor: flar, liyuqian, hixie, chinmaygarde
- PR 14104: Pengerjaan ulang conditional offscreen yang lebih sederhana untuk dukungan pembacaan layar
- PR 13976: Secara dinamis menentukan apakah akan menggunakan permukaan offscreen berdasarkan kebutuhan
- PR 31865: Animasi sederhana menggunakan CPU/GPU/Daya tinggi (~20%) di iPhone 6
- 40% (23%-CPU-14%-GPU menjadi 13%-CPU-8.5%-GPU) pengurangan dalam simple_animation_perf_iphonexs cpu_percentage, gpu_percentage
Percepatan 41% untuk kinerja caret
kontributor: garyqian, liyuqian, justinmc
- PR 46720: Teruskan _caretPrototype untuk mencegah salah cache
- PR 46720: Percepatan 41% (6,709 milidetik menjadi 4,756 milidetik) untuk waktu build bingkai persentil ke-90
- Memperbaiki Masalah 24522: Kinerja caret buruk, waktu GPU tinggi per bingkai
Percepatan 10% untuk scrolling daftar dengan memperbaiki throttling cache raster
kontributor: liyuqian, chinmaygarde, flar, cyanglaz, zsunkun
- PR 31865: Animasi sederhana menggunakan CPU/GPU/Daya tinggi (~20%) di iPhone 6
- PR 13710: Memperbaiki throttling cache raster gambar
- PR 45050: Menambahkan pengujian perf untuk cache raster gambar
- Memperbaiki masalah pemblokir, 43083: Scrolling daftar tidak lancar dengan PR 13710: Memperbaiki throttling cache raster gambar
Percepatan 37x dalam waktu muat benchmark yang di-cache (Dasbor)
kontributor: caseyhillers, tvolkert, digiter, jonahwilliams
- PR 494: Cache get-benchmarks
- PR 484: /api/public/get-status memberikan respons yang di-cache
- Percepatan 37x (37 detik menjadi 1 detik) dalam waktu muat benchmark
Percepatan 2,3x untuk pembangunan APK
kontributor: jonahwilliams, blasten, zanderso, xster
- PR 44534: Meningkatkan kinerja build APK (~50%) dengan menjalankan gen_snapshot secara serentak
- Percepatan 2,3x (140 detik menjadi 60 detik) dalam build rilis APK untuk platform target android-arm, android-arm64, dan android-x64
+103 metrik kinerja yang direkam per tindakan engine Flutter
kontributor: liyuqian, digiter, keyonghan, godofredoc, cbracken
- PR 14556: Menjalankan dan mengumpulkan benchmark
- Masalah terkait: PR 37434: Memusatkan metrik kinerja, memberikan peringatan universal, dan meningkatkan dasbor kinerja
Pengurangan ukuran aplikasi 20%
kontributor: mraleph, alexmarkov, rmacnak-google, mkustermann, sstrickl, aartbik
- 3% dari Menaikkan offset PC dari StackMaps
- 2,58% dari Lebih lanjut memampatkan informasi sebelumnya di StackMaps
- 1% dari Standardisasi payload CompressedStackMaps bila memungkinkan
- 2% dari Sepenuhnya mengaktifkan deduplikasi instruksi dalam mode bare
- 0,3% dari Tidak membuat prolog monomorphic untuk fungsi yang membutuhkan deskriptor args
- 1% dari Membuang redundansi yang menginisialisasi penyimpanan null
- 6% dari Mengurangi penyelarasan Instruksi dan menghapus beberapa instruksi perangkap debugging
- 1,2% dari Menyesuaikan CSP selama potongan permintaan alih-alih setiap prolog fungsi
- 1% dari ARM64: Memblokir R22 untuk menahan NullObject()
- 2,5% dari Propagasi konstan seluruh-program
- 0,77% dari Menghapus kode yang tidak berguna
Percepatan 108x dalam kinerja Dart FFI
kontributor: dcharkes, mkustermann, sjindel, alexmarkov
- Gerrit 120661: Mengoptimalkan operasi Pointer untuk tipe yang dikenal secara statis
- Gerrit 119645: Pointer mengoptimalkan pemuatan dan penyimpanan yang diindeks
- Gerrit 121580: Mengizinkan sisipan fungsi yang dioptimalkan secara paksa di AoT
10–15% peningkatan kinerja dalam kode padat
kontributor: aartbik, mkustermann, mraleph
- Gerrit 117200: Analisis loop dan peningkatan BCE
- Peningkatan kinerja 10–15% di golem armv7, dan TypedData Bench: Gerrit 117200: Analisis loop dan peningkatan BCE
Percepatan 2,2x dalam pengujian flutter dengan serializer inkremental baru
kontributor: jensjoha, alexmarkov
- Gerrit 121121: Mengaktifkan serializer inkremental secara default
- Percepatan 2,2x (3:38 menjadi 1:39) di `pengujian flutter`
Serialisasi biner Kernel yang lebih cepat 10% dengan memberikan petunjuk sisipan untuk Dart VM JIT
kontributor: jensjoha, johnniwinther
Peningkatan kinerja 30% pada kode yang banyak async
kontributor: cskau-g, mkustermann, mraleph
Perbaikan lainnya
Memperbaiki kebocoran memori saat menggunakan PlatformView di iOS
- Memperbaiki kebocoran memori saat menggunakan PlatformView [IOS]
- Kebocoran memori saat menggunakan PlatformView [IOS]
Memperbaiki kebocoran memori saat animasi diputar di iOS
- Gerrit 260538: Jangan berikan pesan yang tidak valid untuk generator yang membuat tekstur tidak bisa di-cache
- Kebocoran Memori saat animasi diputar di iOS
Memperbaiki lebih banyak kebocoran memori iOS
- https://github.com/flutter/engine/pull/14275
- https://github.com/flutter/engine/pull/14326
- https://github.com/flutter/flutter/issues/35243
Memulai pembenahan halaman Kinerja di flutter.dev dan menambahkan instruksi untuk mengukur aplikasi.
Memperbaiki pengukuran dan logika tunggu bingkai pertama
- PR 37192: Reland “Memperbaiki logika bingkai pertama dalam pelacakan dan driver(#35297)”
- Memperbaiki Masalah 47108: Kebocoran Memori saat animasi diputar di iOS
DevTools menambahkan mode timeline penuh dengan dukungan untuk async dan pelacakan terekam.
Plugin IntelliJ memperbaiki dukungan 120FPS
Banyak perbaikan pelacakan timeline berkat ByteDance
- Gerrit 127920: [timeline] Menambahkan dukungan untuk kejadian asinkron timeline di pelacakan platform android
- Gerrit 128200: [timeline] mendukung ketersediaan kejadian vm untuk systrace
- Gerrit 127921: mendukung lebih banyak kejadian sync ketika menggunakan systrace untuk merekam kejadian timeline
- PR 14323: Memperbaiki streaming API yang hilang saat merekam kejadian di systrace
- PR 14521: Timeline dukungan bisa diaktifkan dalam mode rilis
- PR 14319: Memperbaiki kejadian timeline yang hilang pada waktu startup engine flutter
- PR 47742: memperbaiki durasi kejadian ringkasan timeline
- Gerrit 131360: Mendukung konversi timeline untuk pelacakan platform iOS
- PR 16520: Dukungan buffer jejak tanpa batas
- PR 47419: Dukungan perekam tanpa batas untuk timeline
Kuartal 3 (Juli-Sept) 2019
Peningkatan yang terukur
Percepatan 1,5–5x untuk transformasi rect & point
kontributor: flar, yjbanov, dnfield
- PR 37275: Pengoptimalan metode transformRect dan transformPoint di matrix_utils
- Percepatan 5,3x (2300 milidetik menjadi 430 milidetik) dalam MatrixUtils_affine_transformRect_iteration
- Percepatan 1,5x (466 milidetik menjadi 320 milidetik) dalam MatrixUtils_affine_transformPoint_iteration
N/2–1 lebih sedikit bingkai yang hilang saat scrolling iPhone X/Xs
kontributor: liyuqian, chinmaygarde, gaaclarke
- https://github.com/flutter/engine/pull/12385
- PR 12385: Reland “Memperlancar pengiriman kejadian input tidak biasa di iOS
- Mengurangi jumlah kasus terburuk dari bingkai yang hilang dari N/2 menjadi 1 dalam scroll bingkai N. Dalam praktiknya, bingkai N/10 biasanya ada yang hilang sebelum perbaikan.
- Memperbaiki salah satu masalah prioritas kami:
Masalah 31086: Kinerja scroll menurun secara signifikan pada perangkat iPhone X, Xs karena pengiriman kejadian input yang tidak biasa
Start dan shutdown engine 15% lebih cepat dengan inisialisasi paralel
kontributor: gaaclarke, chinmaygarde, liyuqian
- PR 10182: Mempercepat startup flutter dengan mengizinkan inisialisasi diparalelkan
- Percepatan 1,16x (3829377 nanodetik menjadi 3286713 nanodetik) dalam BM_ShellInitializationAndShutdown
Startup lebih cepat 14,57 milidetik dan penggunaan memori 8MB yang lebih kecil untuk shader warm-up
kontributor: gaaclarke, liyuqian, dnfield
- PR 36482: Mempercepat shader warm-up dengan hanya menggambar pada permukaan 100x100
- Menghemat 14,57 milidetik (18,848 milidetik menjadi 4,279 milidetik) dalam membaca/mengonversi piksel pada saat startup
- Menghemat 8MB (39220KB menjadi 31184KB) dalam memori median awal
- Menghemat 4MB (45034KB menjadi 40980KB) dalam memori median akhir
Pengurangan ukuran kode 1,02%-8,04%
kontributor: johnniwinther, aartbik, rmacnak-google, jensjoha, alexmarkov, mkustermann
- https://dart-review.googlesource.com/c/sdk/+/118280
- https://dart-review.googlesource.com/c/sdk/+/112758
- https://dart-review.googlesource.com/c/sdk/+/118181
- -8,04% (5,57MB menjadi 5,13MB) dalam armv8 animation_bench_instructions_size
- -2,7% (2,10MB menjadi 2,05MB) dalam armv7 flutter_gallery_readonlydata_size
- -1,22% (2,10MB menjadi 2,05MB) dalam armv7 layout_bench_instructions_size
Peningkatan hingga 2x untuk Flutter pada Fuchsia FPS; penjadwalan bingkai ditingkatkan
kontributor: dreveman, amott, rosswang, mikejurka
- https://fuchsia-review.googlesource.com/c/topaz/+/280230
- https://fuchsia-review.googlesource.com/c/topaz/+/286735
- https://fuchsia-review.googlesource.com/c/topaz/+/300135
- https://fuchsia-review.googlesource.com/c/topaz/+/306773
- https://fuchsia-review.googlesource.com/c/topaz/+/306772
- https://fuchsia-review.googlesource.com/c/topaz/+/307953
Perbaikan regresi terukur
Percepatan 3x untuk BackdropFilter di iOS
kontributor: lhkbob, liyuqian, flar
- https://skia-review.googlesource.com/c/skia/+/237904
- https://skia-review.googlesource.com/c/skia/+/234413
- https://github.com/flutter/flutter/pull/38814
- Percepatan 3x (110 milidetik menjadi 34 milidetik) dalam GM_savelayer_with_backdrop
- Regresi telah diperbaiki https://github.com/flutter/flutter/issues/36064
Untuk mencapai beberapa peningkatan besar (misalnya 3x), kinerja buruk kondisi masa lalu mungkin memainkan peran yang sama pentingnya dengan kerja keras dalam Kuartal 3 (Juli-Sept) 2019. Kami juga menandai beberapa perbaikan sebagai perbaikan tidak-biasa dari regresi yang sama besarnya. Meskipun demikian, kami menghargai pekerjaan tersebut. Tanpa itu, kami akan terus memiliki kinerja dan regresi yang buruk. Kami tidak ingin perbaikan besar mengerdilkan perbaikan yang lebih kecil. Mereka hanya tidak mendapatkan kinerja lama yang sangat buruk pada awalnya, yang dalam beberapa hal adalah hal baik.
Perbaikan lainnya
- DevTools mendukung tingkat refresh tampilan variabel (mis. 60 FPS, 120 FPS, dll.)
- Pemindaian plugin VSCode untuk proyek sekarang asinkron, yang tentunya akan meningkatkan kecepatan aktivasi ekstensi dan mengurangi kemungkinan terpicunya peringatan “ekstensi menyebabkan penggunaan CPU tinggi” dari VS Code. (#1840/#2003/#1961)
- iPhone Xs ditambahkan ke lab perangkat Flutter untuk dilakukan benchmark
Kesimpulan

Berkat kontribusi dari komunitas kami, proporsi pengguna yang sangat puas dengan kinerja seluler Flutter meningkat dari 85% pada Kuartal 3 2019 menjadi 92% pada 2020. Terlepas dari upaya terbaik kami, beberapa kontribusi kinerja pada Kuartal 3 - Kuartal 4 2019 mungkin terlewatkan dalam update ini. Harap jangan ragu untuk memberi tahu kami tentang kontribusi yang terlewatkan, dan kami akan memasukkannya dalam update berikutnya.
Repelisplus Ver Pelicula Online: repelisplus.org
ReplyDeleteGreat work you have done with your team made the kinerja Flutter I like you team work, one day I was worried about my assignment and I Need Project Management Assignments Help then I take help in my work and we work together as you team work.
ReplyDeleteHonestly speaking, I have never seen any blog sharing this type of huge information. I really appreciate your efforts because the way you have shared this information is very unique. I even want to read more of your blogs, but first, I have to find nursing dissertation topics for my dissertation. I promise I will read them once I get free from my dissertation.
ReplyDeleteThank you for such a post, I will recommend this source to all my friends. You are real experts in the field. Also I recommend writers for to write my discussion board post help. They are open for friendly communication and quality work.
ReplyDeleteI am glad you take pride in what you write. This makes you stand way out from many other writers that push poorly written content. Thanks for taking the time to discuss this, I feel strongly about it and love learning more on this topic Bmw Canyon Cruiser Nappa Motorcycle Leather Jacket If possible, as you gain expertise, would you mind updating your blog with extra information? It is extremely helpful for me. thanks for wonderful info. If you want to know about the site Black Lives Matter Bomber Leather Jacket click here and get the best Chicago Bulls Leather Jacket jackets
ReplyDeleteThanks for sharing this information. Credit Card Blogs
ReplyDeleteThank you for taking the time to share this vital information with us. When I read one of your suggestions, I realise that I work more quickly and silently. I appreciate reading your blog posts in my leisure time and learning new things from them like I pay someone to do your assignment. Please accept my sincere gratitude for everything you've done for me. This is a fantastic effort.
ReplyDeleteI found your blog, when I was looking for vintage antique brooches, it's amazing and quite useful for us.
ReplyDeleteKind of a useful and quite informative blog specially for me, I am CS student, Now I am on my summers vacation and looking for kung fu tv series 2022, thanks for sharing, it will help me a lot in my studies.
ReplyDeleteKung Fu tv Series is an amazing tv show and I personally liked it most but i highly recommend you to watch Blue Lock (https://www.thestreambible.com/netflix/watch-blue-lock/) I have watched it from this website and it was amazing you should check it out. Thanks.
DeleteThis comment has been removed by the author.
ReplyDeleteAs a Web Developer UK, I have been following the updates on Flutter's performance closely, and it's great to see the improvements made in 2019. The ability to build highly performant, native apps with a single codebase has always been a huge draw for me, and the fact that Flutter continues to improve its performance means that I can build even more complex and feature-rich apps without sacrificing speed and efficiency.
ReplyDeleteTransform your ideas into reality with premier mobile app development services in the UK. Our skilled professionals specialize in crafting innovative and user-centric mobile applications that cater to your business goals, providing a seamless digital experience.
ReplyDeleteGreat to see an update on Flutter's performance improvements from 2019—excited for future progress in 2020!
ReplyDeleteIn 2019, Flutter introduced several performance updates, including improvements to its Skia engine, which enhanced rendering speed and reduced jank. Memory usage optimizations and faster compilation times were also prioritized, allowing developers to build smoother apps with quicker load times. These updates made Flutter more efficient for complex mobile app development across platforms. If you need to information about NFT Marketplace then contact us.
ReplyDeleteIf you're in search of reliable laptop service near me, you're in luck! There are numerous options available that can cater to your needs, whether it's a hardware issue, software malfunction, or simply a routine maintenance check.
ReplyDeleteLocal repair shops often provide personalized service, allowing you to discuss your specific problems with knowledgeable technicians who can offer tailored solutions. Additionally, many of these services can often provide quick turnaround times, ensuring that you’re back up and running in no time.