blog

[Flutter】2019年のFlutterパフォーマンスアップデート

高速性はFlutterの重要な柱です。この記事では、Flutterコミュニティの人々が2019年後半から実装しているパフォーマンス改善を紹介します。 2020年にパフォーマンスのヘルプがある場合は、今...

Oct 21, 2020 · 16 min. read
シェア

公開日: 2020年7月31日 - 6 min read

高速性はFlutterの重要な柱です。この記事では、Flutterコミュニティの人々が2019年後半から実装しているパフォーマンス改善を紹介します。

2020年のパフォーマンスに関するヘルプがあれば、今後の記事で取り上げます。これをFlutterコミュニティの皆さんと共有することで、これを成し遂げる手助けをしようという気持ちになることを願っています!

第4四半期

定量的改善

大きなイメージを素早くスクロールする際のメモリを70%削減。

大きなイメージを素早くスクロールする際のメモリを70%削減

文:liyuqiandnfieldchinmaygarde

シンプルなiOSアニメーションのCPU/GPU使用率を40%削減。

投稿者: flar, liyuqian, hixie, chinmaygarde

小型車性能加速度の41

投稿者:Garyqian, Li yuqian, Justinmc

ラスターキャッシュのスロットリングを修正することにより、リストのスクロールが10%高速化されました。

投稿者:Li yuqian, chinmaygarde, flar, cyanglaz, zsunkun

キャッシュ・ベンチマークのロード時間が37倍高速化

投稿者:caseyhillers, tvolkert, digiter, jonahwilliams.

APKのビルドが2.3倍速くなりました。

投稿者:Jonahwilliams, blasten, zanderso, Xster.

Flutterエンジンのコミットごとに、+103のパフォーマンスメトリクスのログを記録。

投稿者:liyuqian, digiter, keyonghan, godofredoc, cbracken

アプリケーションサイズを20%削減

投稿者: mraleph, alexmarkov, rmacnak-google, mkustermann, sstrickl, aartbik.

Dart FFIのパフォーマンスが108倍に向上

投稿者:,mkustermann,sjindel,alexmarkov.

タイトなコードで10~15%のパフォーマンス向上

投稿者:Aartbik, , mraleph.

新しいインクリメンタル・シリアライザーでFlutterのテストを2.2倍高速化

寄稿:JensjohaAlexmarkov

Dart VM JITにインライン・ヒントを提供することで、カーネル・バイナリのシリアライズを10%高速化

文:ARM64R22 ブロックは NullObject() を保持するために使用されます。, ジョンニウィンター

重い非同期コードのパフォーマンスが30%向上

文:、MKustermann、Mraleph。

その他の改善点

iOSでPlatformViewを使用した際のメモリーリークを修正しました。

iOSでアニメーションを再生する際のメモリーリークを修正

より多くのiOSのメモリリークを修正

flutter.devのmkustermannページの改修を開始し、アプリサイズの測定方法を追加しました。

最初のフレーム待機ロジックと計測に関する問題を修正

  • [PR 37192: Reland "Fixing first-frame logic in tracking and driving"]
  • 問題47108を修正:iOSでアニメーションを再生する際のメモリーリーク

DevToolsは、非同期および記録トラッキングをサポートする完全なタイムラインモードを追加します。

IntelliJプラグインが120FPSサポートを修正

ByteDanceのおかげで、タイムラインのトラッキングの多くが改善されました!

第3四半期

定量的改善

矩形と点の変換を1.5~5倍高速化

投稿者:flar,yjbanov,dnfield

iPhone X/Xsでスクロールすると、N/2-1の方がフレームを見逃しません。

投稿者:Li yuqian、 chinmaygarde、 gaaclarke

パラレル初期化により、エンジンの始動および停止速度が15%向上します。

投稿者:Gaaclarke、 、 Li yuqian。

起動は14.57ms高速化し、シェーダーのウォームアップにかかるメモリ使用量は8MB減少しました。

投稿者:Gaaclarke, Li yuqian, dnfield

コードサイズを1.02%~8.04%削減。

投稿者:, aartbik, rmacnak-google, jensjoha, alexmarkov, mkustermann

  • armv8アニメーション_bench_instructions_size ,-8.04%
  • armv7フラッターで_gallery_readonlydata_size ,-2.7%
  • armv7レイアウト_bench_instructions_size 媒体 -1.22%

フクシアのフラッターのFPSが2倍向上。

貢献者:、アモット、ロスワン、マイクユルカ

定量化されたリグレッションの修正

iOSのBackdropFilterは3倍高速です。

投稿者: lhkbob, Li yuqian, flar

古い状態でのパフォーマンスの低さは、いくつかの大きな改善を達成するための2019年第3四半期でのハードワークと同じくらい重要な役割を果たしたかもしれません。また、同様に大きな回帰のための非自明な修正としていくつかの改善をマークします。それにもかかわらず、このような仕事に感謝します。それがなければ、パフォーマンスの低下やリグレッションが続いていたでしょう。大きな改善が小さな改善を矮小化しないように。彼らはもともと本当に悪い古いパフォーマンスを持っていなかっただけで、それはある意味良いことです。

その他の改善点

  • DevToolsが可変ディスプレイ・リフレッシュ・レートをサポート
  • VSCodeプラグインによるプロジェクトのスキャンが非同期になり、エクステンションの有効化速度が向上し、VS Codeの「エクステンションが原因でCPUが高い」という警告が表示される可能性が低くなりました。
  • iPhone Xsはベンチマーク用にFlutter Device Labsに追加されました。

Filip Hracekに感謝します。

こうしたコミュニティの貢献の結果、Flutterのモバイルパフォーマンスに肯定的に満足しているユーザーの割合は、2019年第3四半期の85%から2020年には92%に増加しました。最善の努力にもかかわらず、2019年第3四半期から第4四半期にかけてのパフォーマンス貢献の一部がこのアップデートで見逃されている可能性があります。見逃された貢献については、次回のアップデートに掲載いたしますので、ご遠慮なくお知らせください。

Filip Hracekに感謝します。

Read next

小プログラムの固定配置要素とページメソッドonPageScrollスクロール効果の最適化

はじめに\n\n比較表後に修正・変更\n\nソリューションのアイデア\nあなたはアイデアを持っていないとき、あなたは神々がどのように行うかを見ることができます、非常に完璧な行うには、小さなプログラムのコンポーネントを賞賛している、タブの吸引効果を移動するページがあり、感覚は私が欲しい効果に似ている、そして、ソースコードを見て、sでタブのラベルを参照してください。

Oct 21, 2020 · 3 min read