Developer Platform Drill Downを見た後、彼がクラウドでコンパイルするとはどういう意味か疑問に思いました。彼は、すべてのWindowsPhoneがすべてコンパイルされると述べました。すべてのアプリがNGENされるということですか?JITerのより高度なヒューリスティックが含まれますか?たとえば、.Net CFでは、プロパティは関数呼び出しに解決されます(インライン化なし)。
2 に答える
デバイス + OS も SDK もまだ公開されていないため、これに対する決定的な答えはありません。
Kevin が説明したように、クラウドでのコンパイルとは、アプリケーションがマシン コードにコンパイルされることを意味し (管理された環境で作業する可能性が高い)、実際のデバイスでのパフォーマンスが大幅に向上します。私の理解では、開発者はクラウド コンパイル サービスにアクセスできません。アプリケーションが Marketplace の承認のために送信されると、Microsoft によって実行されるタスクになります。
アイデアはとてもシンプルです。まず、MDIL または Machine Dependent Intermediate Language または .NET ハイブリッド アセンブリ言語を入力します。MDIL は、可能な限りネイティブ アセンブリ命令にコンパイルし、残りを電話でネイティブ命令にすばやく変換できる疑似命令にコンパイルすることを目的としています。したがって、疑似命令とネイティブ命令の混合を含むこのアセンブリは、デバイスに出荷できます (そして、同じアーキテクチャ間で移植可能です。たとえば、すべての ARM デバイス間で移植可能です)。アセンブリ全体をネイティブ イメージに変換します。IL アセンブリを IL アセンブリとネイティブ イメージの間の中間ファイルにコンパイルするときに、ほとんどの面倒な作業が行われます (これが MDIL です)。
「だから何?」とあなたは尋ねます。MDIL アセンブリをネイティブ イメージに変換するデバイス上のリンク手順は、デバイス上の従来の NGEN の 1/5 の時間しかかかりません。したがって、プリコンパイル (すべての命令がアセンブリ命令であるネイティブ イメージから実行するため) と JIT コンパイル (フレームワークの更新中にデバイスで重いコンパイルを行わないため) の両方の利点を得ることができます。