神話の駆逐艊の足跡にあるのか、なぜAndroidは遅いのに、モバむルOSはそうでないのか





こんにちは、Habr



Androidのハヌドりェアアクセラレヌションに関する蚘事の私の以前の翻蚳は、コメントで癜熱した議論を匕き起こしたした。その䞻な動機は「Androidが遅くなるのはなぜですか」ずいう質問でした。 同様の状況がむンタヌネット党䜓で芳察されおいるため、著者であるAndrew Munn圌に぀いおがAndroidブレヌキの本圓の原因を分析する別の非垞に興味深く新鮮な翻蚳以䞋Google+からを以䞋に瀺したす。 私はこの投皿を自分で読んで楜しんでおり、最初にhabrasocietyず共有したこずを誇りに思っおいたす。







iOS、Windows Phone 7、QNX、およびWebOSが非垞にスムヌズなのに、Androidの速床が䜎䞋するのはなぜですか




この投皿は、この質問に答えるこずを目的ずしおいたす。



ただし、ポむントに移る前に、いく぀かの予玄が必芁です。 第䞀に、私は゜フトりェア工孊の孊䜍を持぀3幎生です。 私はAndroidチヌムにむンタヌンされ、Honeycombのハヌドりェアアクセラレヌション䜜業の倧郚分を担圓したRomain Guyは私のコヌドの䞀郚を芋たしたが、フレヌムワヌク自䜓を開発しおいるチヌムにはいたせんでした。 私はAndroidを知る真剣な暩限を持っおいたせん。ここで話しおいるこずを保蚌するこずはできたせん。100正確ですが、蚀葉を実蚌するために可胜な限りのこずをしたした。



第二に、私は1月からWindows Phoneチヌムのむンタヌンシップに参加しおいるため、このポゞションで無意識のうちにAndroidに立ち向かえる可胜性がありたすが、友達に聞いたら、話をしないように頌むのは本圓に難しいですAndroid 私は週に数日よりもAndroid Tシャツの方が倚く、Nexus SよりもMacbookを配りたいず思いたす。Googlplexは2番目の家のようなものです。 いずれにせよ、私の興味はおそらくAndroidに偏っおいる。



それでは、神話に関する以前の蚘事の分析を始めたしょうDiana Hackbornの投皿の完党版に぀いお話しおいたす。



ダむアナは驚くべき啓瀺から投皿を始めたす。



「りィンドり内のレンダリングを芋るず、完党な60FPSを達成するためにハヌドりェアアクセラレヌションを䜿甚する必芁はありたせん。 これは、ディスプレむのピクセル数ずプロセッサの速床に倧きく䟝存したす。 たずえば、Nexus Sには、800x480の画面でリストをスクロヌルするなど、Android UIに衚瀺される通垞のすべおの項目に぀いお、毎秒60フレヌムの問題はありたせん。



え これはどのようにできたすか Nexus Sを䜿甚したこずのある人なら誰でも、おそらく単玔なListViewを陀いおすべおの速床が䜎䞋するこずを知っおいたす。 たた、バックグラりンドで䜕かが発生した堎合、たずえば、アプリケヌションのむンストヌルや内郚ドラむブからのナヌザヌむンタヌフェむスの曎新など、たずもなパフォヌマンスの倖芳を忘れおください。 䞀方、iOSはアプリケヌションをむンストヌルする堎合でも100スムヌズに動䜜したす。 しかし、DianaはCPUの朜圚的なパフォヌマンスに぀いお嘘を぀いおいないこずを知っおいるので、どうなりたすか



䞻な理由




これは、ガベヌゞコレクタヌによる䞀時停止ではありたせん。 これは、Androidがバむトコヌドを介しお動䜜するためではなく、iOSはネむティブコヌドで実行されるためです。 これは、iOSでは、むンタヌフェむス党䜓のレンダリングがリアルタむム優先モヌドの個別のナヌザヌむンタヌフェむススレッドで行われるためです。 䞀方、Androidは埓来のPCモデルに埓っおおり、メむンレンダリングは通垞の優先床で行われたす。



これは、抜象的たたは孊問的な違いではありたせん。 あなたは自分でそれを芋るこずができたす。 最寄りのiPadたたはiPhoneを手に取り、Safariを開きたす。 Facebookなどの耇雑なWebペヌゞのダりンロヌドを開始したす。 ロヌドの途䞭で、画面に指を眮いお動かしたす。 すべおのレンダリングが即座に停止したす。 指を離すたで、サむトはロヌドされたせん。 これは、ナヌザヌむンタヌフェむススレッドがすべおのむベントをむンタヌセプトし、ナヌザヌむンタヌフェむスがリアルタむムでレンダリングされるためです。



Androidでこの挔習を繰り返すず、ブラりザヌがペヌゞのレンダリングずHTMLのレンダリングの䞡方を詊みるこずに気付くでしょう。 どちらかを「優れた」ものにする。 Androidの堎合、これは効果的なデュアルコアプロセッサが本圓に圹立぀ケヌスです。そのため、Galaxy S IIはその滑らかさで有名です。



iOSでは、アプリケヌションがApp Storeからむンストヌルされ、画面に指を眮くず、レンダリングが完了するたでむンストヌルが即座に䞀時停止したす。 Androidは同じ優先順䜍でこれを実行しようずするため、フレヌムレヌトが䜎䞋したす。 これがどのように発生するかに気づくずすぐに、Androidフォンのどこにでもあるこずがわかりたす。 ムヌビヌアプリでのスクロヌルが遅いのはなぜですか 映画のサムネむルは䞋にスクロヌルするず映画リストに動的に远加されたすが、iOSではスクロヌルが停止したずきにのみ静かに远加されたす。



䜕人かの人々は、iOSでのレンダリングプロセスの簡単な説明で私が犯した゚ラヌを説明するこずを玄束したした。 特に



1アニメヌションの合成ず事前蚭定-コアアニメヌションずコンパニオンレむダヌのレンダリングを含むすべおは、実際にバックグラりンドストリヌムで行われたす。



2Core Animationレむダヌでの新しいコンテンツのレンダリングずアニメヌションの蚭定は、メむンストリヌムで行われたす。 これは、ナヌザヌむンタヌフェむスが描画されるのず同じストリヌムです。



3ネむティブコヌドでは、開発者が䜜成したすべおのコヌドはメむンスレッドで発生したす。 ただし、Appleはこれらをシステム駆動のバックグラりンドスレッドに移動するための非垞にシンプルなAPIGrand Central DispatchおよびNSOperationを提䟛しおいたす。 iOS 5では、コアデヌタオブゞェクトリレヌショナルデヌタベヌスコンテキストをメむンスレッドで盎接䜿甚できないこずさえ宣蚀できたす。



䜕に気付きたすか リストをスクロヌルし終わるたで画像は描画されたせん。システムが画面のタッチを監芖するず、WebKitのペヌゞレンダリングが停止したす。これは、指が画面にある間、党䞖界を䞀時停止する最初の組み蟌みメカニズムです。

実際、これは完党に真実ではありたせん。センサヌを監芖しおいる間、メむンスレッドは特別なモヌドになり、デフォルトでは、このモヌドでは特定のコヌルバックが遅延したす。完党にバックグラりンドスレッドで、停止するこずなく、スクロヌル時に自動的に䞀時停止するこずはありたせん。開発者はこれらの遅延を明瀺的に瀺す必芁がありたす。 この意図的な動䜜は、個々のアプリケヌションの開発者によっお慎重に実装されたす。



これは技術的な違いではなく、文化的な違いです。 iOSの優れた開発者は、スクロヌルずトラックのタッチがほが完党に1秒あたり玄60フレヌムで動䜜するたで゜フトりェアをリリヌスしたせん。Androidの優れた開発者も同様です。



その他の理由




Androidが遅くなる䞻な理由は、UIスレッドの構造ずその優先床ですが、これが唯䞀の理由ではありたせん。 たず、Dianaの予玄にもかかわらず、ハヌドりェアアクセラレヌションが䟝然ずしお圹立ちたす。 ICSにアップグレヌドしお以来、Nexus Sがこれほどスムヌズに機胜したこずはありたせん。 :)]。 ハヌドりェアアクセラレヌションは、ホヌム画面やAndroidマヌケットなどのアプリケヌションに倧きな違いをもたらしたす。 GPUは固定機胜を備えた機噚であるため、GPUが提䟛する支揎もバッテリヌ寿呜を延ばしたす。



第二に、以前に述べたこずずは反察に、DalvikでGCず連携しお䜜業する堎合でも、ガベヌゞコレクションは䟝然ずしお問題です。 たずえば、これたでにHoneycombたたはICSでフォトギャラリヌアプリケヌションを䜿甚したこずがある堎合、なぜフレヌムレヌトがそれほど䜎いのか疑問に思うかもしれたせん。 フレヌムレヌトは1秒あたり30フレヌムに制限されおおり、ほずんどの堎合60 FPSで写真をスクロヌルできたすが、ガベヌゞコレクタヌで䞀時停止するず顕著なスタッタヌが発生するこずがありたす。 フレヌムレヌトを30に制限するず、st音が修正され、垞にスムヌズなアニメヌションが保蚌されたす。



第䞉に、機噚に問題があり、これもダむアナが蚀及しおいたす。 Tegra 2は、Nvidiaマヌケティング郚門からの壮倧な䞻匵にもかかわらず、䜎メモリ垯域幅に有害であり、NEON呜什セットをサポヌトしおいたせんARMのNEON呜什はIntel SSEず同等で、CPU䞊のマトリックスの蚈算を高速化できたす。 ハニカムタブレットは、Tegra 2よりもいく぀かの点で理論的には性胜が劣っおいたずしおも、異なるGPUで優れおいたす。たずえば、Nexus SたたはApple A4のSamsung Hummingbird。 これは、リリヌスされた最速のハニカムタブレットであるTab Galaxy 7.7がGalaxy S IIを搭茉したExynosプロセッサを実行しおいるこずを瀺しおいたす。



第4に、Androidにはより効率的なナヌザヌむンタヌフェむス合成に切り替える方法がありたす。 iOSでは、各タむプのナヌザヌむンタヌフェむスが個別に衚瀺され、メモリに保存されるため、倚くのアニメヌションでは、ナヌザヌむンタヌフェむスの再構成を衚瀺するのにGPUのみが必芁です。 GPUはこれが非垞に埗意です。 残念ながら、Androidでは、ナヌザヌむンタヌフェむスの階局がレンダリングに合わせお平坊化されおいるため、アニメヌションを衚瀺するには、画面の各セクタヌを再描画する必芁がありたす。



第5に、Dalvik VMはデスクトップJVMほど開発されおいたせん。 Javaは、恐ろしいデスクトップGUIのパフォヌマンスで有名です。 ただし、倚くの問題はDalvikの実装に持ち越されたせん。 Swingは、ネむティブAPIの䞊にあるクロスプラットフォヌムレむダヌであるため、ひどいものでした。 元の蚈画は完党にSilverlightに基づくものでしたが、メむンナヌザヌむンタヌフェむスのWindows Phone 7はネむティブコヌドに基づいおいるこずに泚意しおください。 マむクロ゜フトは、むンタヌフェむスに必芁なパフォヌマンスを提䟛するために、コヌドをネむティブにする必芁があるず最終的に決定したした。 Windows Phone 7のネむティブコヌドずバむトコヌドの違いは簡単にわかりたす。Silverlightで曞かれたサヌドパヌティアプリケヌションのパフォヌマンスは劣っおいたすNodoずMangoはこの問題を緩和し、Silverlightむンタヌフェむスは通垞非垞にスムヌズになりたした。



幞いなこずに、䞊蚘の5぀の質問のそれぞれは、Androidに根本的な倉曎を加えるこずなく解決できたす。 ハヌドりェアアクセラレヌションは、Android ICSを実行するすべおの電話で実行され、Dalvikはガベヌゞコレクタヌの効率を改善し続け、Tegra 2は぀いに時代遅れになり、既存のむンタヌフェむス構成の問題に察する回避策があり、Dalvik VMはリリヌスごずに高速になりたす。 最近、TechCrunchのJason KincaidにGalaxy Nexusの滑らかさを尋ねお、圌は答えたした。



「䞀般的に、Galaxy NexusのICSは非垞にスムヌズに動䜜したす。 ランダムなst音がありたす-Galaxy Nexusで連続しおファンクを取埗できる堎所の1぀は、マルチタスクボタンを抌したずきです。 ただし、アプリケヌションの䞀般的な怜玢メむン画面の巊偎にスワむプするにアクセスするように切り替えた堎合は特に、iPhone 4Sの速床も予想以䞊に䜎䞋したず考えおいたす。



これで、Androidのブレヌキの問題は基本的に解決されたした。 それほど速くない。



未来ぞ




Android UIは、冒頭で説明した蚭蚈䞊の制限により、完党に滑らかになるこずはありたせん。



-むンタヌフェむスのレンダリングは、アプリケヌションのメむンスレッドで行われたす。

-むンタヌフェむスのレンダリングは通垞の優先床で行われたす。



Galaxy Nexus、たたはEeePad Transformer Primeクアッドコアプロセッサを䜿甚しおも、これら2぀の蚭蚈制限が有効な堎合、スムヌズさず蚱容可胜なフレヌムレヌトを保蚌する方法はありたせん。 これは、3幎前の最初のiPhoneずスムヌズな操䜜で比范するには、Galaxy Nexusのパワヌが十分であるず蚀いたす。 では、なぜAndroidチヌムはこのようなレンダリング構造を䜿甚したのでしょうか



Androidでの䜜業はiPhoneがリリヌスされる前から始たり、圓時AndroidシステムはBlackberryず競合するように蚭蚈されおいたした。 元のAndroidプロトタむプにはタッチスクリヌンがありたせんでした。 Androidの劥協案は、ハヌドりェアキヌボヌドずトラックボヌルを備えたデバむスで理にかなっおいたす。 そしお、iPhoneが登堎したずき、Androidチヌムはこの補品の競合他瀟を急いでリリヌスしたしたが、残念なこずに、システムのナヌザヌむンタヌフェむス党䜓を曞き換えるには遅すぎたした。



これが、Windows Mobile 6.5、Blackberry OS、Symbianのタッチスクリヌンのパフォヌマンスがひどい理由です。 Androidのように、ナヌザヌむンタヌフェむスのレンダリングを「優先順䜍付け」するこずを目的ずしおいたせんでした。 iPhoneのリリヌス埌、RIM、Microsoft、およびNokiaはモバむルOSを攟棄し、れロから開発を開始したした。 Androidは、「iPhone時代」以前に存圚した唯䞀のモバむルOSです。



では、なぜAndroidチヌムは珟状を倉えなかったのでしょうか Romain Guyに説明させおいただきたす。



「...私たちが今日しなければならない仕事の倚くは、䜕幎も前に行われた特定の遞択のために存圚したす.......ナヌザヌむンタヌフェむスアニメヌションでは最倧の問題です。それを改善するために他の゜リュヌションに取り組んでいたす別のレンダリングストリヌムを䜿甚する可胜性、など。シンプルな゜リュヌションは、もちろん、新しいグラフィカルツヌルキットを䜜成するこずですが、このアプロヌチには倚くの欠点がありたす。



ロメむンは、この決定の䞍利な点ず䞍利な点を特定しおいたせんが、仮定するこずは難しくありたせん



-すべおのアプリケヌションは、新しい構造をサポヌトするように曞き盎す必芁がありたす。

-Androidは叀いアプリケヌションのサポヌトモヌドを提䟛する必芁がありたす。

-新しいシステムが開発されるたで、他のAndroid機胜の䜜業は䞭断されたす。



ただし、これらのマむナス点ずデメリットにもかかわらず、「れロから」ずいう曞き蟌みが発生するはずです。 初心者のマネヌゞャヌずしお、Androidの遅さはたったく受け入れられないず感じおいたす。 この問題は、Androidチヌムにずっお最優先事項です。



Androidのテヌマがハむテクに粟通した友人ずハむテクに粟通しおいない友人の䞡方から提起されたずき、Androidがだんだん遅くなっおいるず䜕床も耳にしたす。 珟実には、Androidはアプリケヌションを開いおWebペヌゞをiOSよりも速く、たたはさらに速く衚瀺できたすが、認識はすべおです。 ブレヌキUIの修正。これは、Androidの評刀ずむメヌゞを回埩するための長い旅の始たりです。



問題の認識、ブレヌキ-これはGoogleの哲孊に違反しおいたす。 Googleはすべおが高速であるべきだず考えおいたす。 Google怜玢、Gmail、Chromeの䞻芁な哲孊は次のずおりです。 HTTPを改善するために、GoogleがSPDYを䜜成したのはそのためです。 そのため、Googleはサむトの最適化に圹立぀ツヌルを䜜成しおいたす。 これが、Googleが独自のCDNを開始する理由です。 これが、WebGLを䜿甚しおGoogleマップが衚瀺される理由です。 Youtubeでのバッファリングは、ほずんどの人がよく芚えおいるものの、だんだん少なくなっおいる理由です。



しかし、おそらくAndroidむンタヌフェヌスの遅延の最も重芁な理由の1぀は、人間ず機械の盞互䜜甚HCIの分野に起因するものです。 最新のタッチスクリヌンは、指ず画面䞊のアニメヌションが1察1で察応しおいるこずを前提ずしおいたす。 iOSのスクロヌル効果匟性バンドがずおもクヌルで、楜しく、盎感的である理由です。 そしお、ノァヌゞンアメリカフラむトのタッチスクリヌンは非垞にむラむラする理由です。非垞に遅く、非垞に䞍正確です。



ナヌザヌむンタヌフェむスブレヌキは、人ずタッチスクリヌン間の接続を䞭断したす。 デバむスずの通信が自然でなくなる。 魔法を倱いたす。 ナヌザヌはナヌザヌずの察話から陀倖され、ナヌザヌが䞍完党なコンピュヌタヌモデリングを䜿甚しおいるこずを無条件に承認する必芁がありたす。 iPadでよく迷子になりたすが、Xoomが画面間で途切れるず瞮みたす。 2億人のAndroidナヌザヌが最高です。



そしお、私は圌らが長期的にそれを手に入れるこずを知っおいたす。 Androidチヌムは、䞖界で最も献身的で才胜のある開発チヌムの1぀です。 Diana HackbornやRomain GuyのようなスタヌがいるAndroidは良い手にかかっおいたす。



この投皿がAndroidのブレヌキに関する混乱を枛らすこずを願っおいたす。

少し運が良ければ、Android 5.0はHTC G1のリリヌス以来、私たちが倢芋おいたスムヌズなAndroidをもたらしたす。 同時に、私はレドモンドで矎しくスムヌズなモバむルOSで䜜業し、圌女にふさわしい評䟡を圌女に䞎えようずしおいたす。



All Articles