Xamarin.Formsのボトルネックの拡倧

モバむルアプリケヌションを䜜成するずき、「 ならどれだけ良いか」ずいう粟神で倚くの異なるりィッシュリストがありたす。そしお、改善が必芁なアむテムを眮き換えるこずができたす。 この蚘事には、新しいXamarin.Forms開発者がフレヌムワヌクずビルドツヌルのボトルネックを回避するのに圹立぀掚奚事項が収集されたす。 そしお、鉄から始めたす。







著者に発蚀暩を䞎えたす。



1.環境のセットアップ



Xamarin.Forms開発者が最初に盎面するのは、快適なレベルよりもはるかに長いプロゞェクトの長いビルドです。 これは、アセンブリ䞭に倚数のファむルが䜜成および曎新されるためです。







アセンブリを高速化するには、゜ヌスフォルダをRAMディスクに転送するだけです。 これは、RAMの䞀郚がMacファむルシステムのロヌカルディスクたたはフォルダヌずしお䜿甚される堎合です。 䜕も倱われないように、RAMディスクのデヌタはタむマヌでSSDに保存されたす。 ただ通垞のハヌドディスクドラむブHDDがある堎合は、間違いなくSSDにアップグレヌドする必芁がありたす。 4GB RAM +優れたSSDは、ビルドを著しく高速化したす。 箄1桁。







ネットワヌク䞊には、RAMディスクを操䜜するためのさたざたなナヌティリティず、それらを操䜜するための手順がありたす。



2. Xamarinのボトルネック



他のツヌルず同様に、アプリケヌションを䜜成するずきは、Xamarin.Formsの機胜を理解する必芁がありたす。 アプリケヌションのタスクが、倚数のアニメヌションず非暙準むンタヌフェヌスでナヌザヌを驚かせるこずである堎合、クロスプラットフォヌムフレヌムワヌクは最良の遞択ではありたせん。 しかし、比范的静的なビゞネスアプリケヌションの堎合は、はるかに優れおいたす。







Xamarin.Formsは埓来のXamarin.iOSおよびXamarin.Androidのアドオンであるため、それらのボトルネックを理解する必芁がありたす。 以䞋は、Xamarin.iOSおよびXamarin.Android䞊のアプリケヌションのアヌキテクチャです。







Xamarin-applicationは、ネむティブずクロスプラットフォヌムMono環境の2぀の郚分で構成されおいたす。 これらの郚分は、特別なブリッゞを介しお互いに通信したす。 Mono環境のラッパヌは、各ネむティブクラスずタむプの呚りに䜜成されたす。 「ネむティブ」から「クロスプラットフォヌム」ぞの移行でデヌタを転送しおメ゜ッドを呌び出すず、パフォヌマンスがわずかに䜎䞋するため、これを必ず考慮する必芁がありたす。







たずえば、デヌタを蚈算しお操䜜するずきは、ネむティブ環境nfloatではなく、Mono環境C/。NETの型ずクラスを䜿甚したす。 たた、CコヌドからのUIの制埡を最小限に抑える必芁がありたす。 たずえば、アニメヌションを実行したり、クロスプラットフォヌムパヌツからルヌプでUIを集䞭的に曎新したりしないでください。 ブレヌキがかかっおいたわけではありたせんが、UIの倧芏暡な蚈算ず倧芏暡な制埡非同期で受信するデヌタずさたざたなアニメヌションを含む倚数の芁玠を䜿甚するず、ナヌザヌに顕著な䞍芁な遅延が発生する可胜性がありたす。







これはXamarin.Formsに完党に適甚され、iOS、AndroidおよびWindows UWP、mac OS、GTK、Tizenのヒヌプぞのナヌザヌむンタヌフェむスずプラットフォヌム機胜を備えた柔軟で高性胜な䜜業局の䞡方を提䟛するずいう困難なタスクを解決したすが、考慮しないでください。 そしお、「小児」疟患のほずんどはすでに克服されおいるずいう事実にもかかわらず、ボトルネックは䟝然ずしお残っおいたす。これは、開発時に考慮されるべきです。







3. XAML



Xamarin.Formsの初期バヌゞョンには、XAMLペヌゞに関する明らかなパフォヌマンスの問題がありたした。 同じナヌザヌむンタヌフェむスをCコヌドで蚘述するこずができたした。これにより、䞭性胜のデバむスでペヌゞたたはビュヌの䜜成時間コンストラクタヌ呌び出しが300ミリ秒以䞊短瞮されたした。 耇雑なコンポヌネントの堎合、この時間はさらに長くなりたした。 App.xamlは、アプリケヌションのコヌルドスタヌト時間の増加に貢献したした。 スタむルやその他のリ゜ヌスがたくさんある堎合、アプリケヌションの起動は目立っお増加する可胜性がありたす。 再びれロから。 この問題は特にAndroidに関連しおおり、Cコヌドを優先しおApp.xamlおよび起動ペヌゞたずえば、MainPage.xamlおよびMenuPage.xamlを䜿甚するこずを簡単に回避するず、アプリケヌションの起動時間が半分に短瞮される堎合がありたした。







今回は、XAMLコンパむルを远加するず倧幅に削枛されたした。 Xamarin.Forms 2.5.0では 、Hello Worldペヌゞに察しお次のメトリックが生成されたした。













ご芧のずおり、たれなケヌスでは、たずえば、最倧のパフォヌマンスが重芁なListViewセルの堎合、Cでむンタヌフェむスの説明を䜿甚できたす。 他のすべおのシナリオでは、 [assembly: XamlCompilation(XamlCompilationOptions.Compile)]



をプロゞェクトコヌドに远加するこずにより、UIを倧幅に高速化できたす。













たた、耇雑なレむアりトず倚数の芁玠を備えた埋め蟌みXAMLXAMLペヌゞは倖郚ビュヌを䜿甚し、XAMLに぀いおも説明したすの堎合、初期化時間がHello Worldの䟋よりも長くなるこずを怜蚎する䟡倀がありたす。 XAMLをコンパむルするず、ペヌゞずビュヌの䜜成が倧幅にスピヌドアップしたす。次のポむントに進みたす。







4.レむアりト



iOS、Androidおよびその他のプラットフォヌムのナヌザヌむンタヌフェむスのクロスプラットフォヌムレむアりトを提䟛するために、Xamarin.Formsはむンタヌフェむス芁玠の独自のレむアりトメカニズムを実装しおいたす。 ネむティブiOSおよびAndroidには独自のレむアりトメカニズムがありたすが、プラットフォヌムごずに特定のロゞックがあるため、クロスプラットフォヌムアプリケヌションには盎接適しおいたせん。













ペヌゞを正しく配眮するために、フレヌムワヌクはペヌゞにネストされた芁玠のサむズを知る必芁があり、これにより子コントロヌルのツリヌ党䜓のクロヌルが開始されたす。 Xamarin.Formsの将来のリリヌスでは、レむアりトメカニズムを含む倚くの最適化が玄束されおいたす。 ただし、珟時点では、単玔なルヌルを芚えおおく䟡倀がありたす。UI芁玠の数字がより正確に瀺され、ネストのレベルが䜎いほど、レむアりトが速くなりたす。 たずえば、UI芁玠のプロパティでAbsoluteLayout.LayoutBounds="0.1,0.1,0.3,0.3" WidthRequest=”300”



を指定できたす。







たた、レむアりトを実装する必芁がある堎合もありたす。 それらでは、たずえば、芪ビュヌの寞法を基準にしお、各UI芁玠の正確な寞法を蚈算できたす。 これにより、座暙の長い再蚈算が䞍芁になり、リストビュヌの重いセルの速床が䞊がりたす。









レむアりト最適化の詳现







レむアりトの䜜成の詳现を読む









5. UIおよび正しいViewModelの曎新



Xamarin.Formsを含むすべおのUIサブシステムのもう1぀の問題は、デヌタを曎新する際のサむズの再蚈算です。 これは、ビゞュアルオブゞェクトのツリヌを曎新するこずで有名な問題で、ReactJSの類䌌物がWeb開発で登堎したした。 モバむルでは、この問題は深刻ではありたせんが深刻です。







Xamarin.FormsはMVVMアヌキテクチャを䜿甚したす。ViewModelプロパティが曎新されるず、PropertyChangedむベントが発生し、新しいデヌタがUIに到着し、Viewはペヌゞ党䜓のサむズず座暙の再蚈算を芁求できたす。













10の異なるフィヌルドを曎新するず、ペヌゞ䞊の芁玠のツリヌ党䜓で10のレむアりトサむクルが発生したす。これらはナヌザヌの目には10サむクルです。 10サむクルではなく1サむクルを実行するには、必芁な10フィヌルドを持぀1぀のモデルを䜿甚する必芁がありたす。 これで、モデルずビュヌが党䜓ずしお曎新されたす-10ではなく1぀のPropertyChangedむベント。













そのため、本日の蚘事では、Xamarin.Formsの䞻なボトルネックず、その効果をレベル化するアプロヌチに泚目したした。 そしお、今日だけではありたせん







Xamarin Dayぞの招埅



Xamarinに぀いお質問があり、クロスプラットフォヌムアプリケヌションの開発に興味がある堎合は、 1月31日にモスクワで開催されるXamarin Dayに぀いおお知らせしたす。 その䞊で、ベストプラクティスに぀いお孊ぶだけでなく、コヌドに関するラむブアドバむスを受けるこずもできたす 。 質問のあるコヌド問題、バグ、アヌキテクチャ、パフォヌマンスの䜎䞋などを衚瀺し、その堎で専門家のアドバむスを無料で入手できたす。 プロゞェクトに関する個別盞談を申し蟌むには、 events-techdays @ microsoft.comでプロゞェクトず問題に関する簡単な情報を曞いおください。







むベントの詳现に぀いおは、 こちらをご芧ください 。



Telegramの居心地の良いXamarin開発者チャットに参加しおください。









連絡を取り合い、 必ずXamarin Dayに来おください









著者に぀いお



Vyacheslav Chernikovは 、 Binwell 、Microsoft MVP、およびXamarin認定開発者の開発責任者です。 過去には、Nokia ChampionおよびQt認定スペシャリストの1人であり、珟圚はXamarinおよびAzureプラットフォヌムのスペシャリストです。 圌は2005幎にモバむル分野に参入し、2008幎からモバむルアプリケヌションを開発しおいたす。Symbian、Maemo、Meego、Windows Mobileから始め、その埌iOS、Android、Windows Phoneに切り替えたした。 Mediumブログで Vyacheslavの蚘事を読むこずもできたす。



著者による他の蚘事は、 xamarincolumnコラムにありたす。



All Articles