バージョンに基づいています。この記事に含まれるすべての情報は、変更される可能性があります。ツールを使用した経験があるか、少なくとも聞いたことはあるはずです。インストール時にフレームワークの中心となるアセンブリで使用してきました。アプリケーションを簡単かつ迅速に配置するための注目すべき数々の新機能が提供されています。この記事では、これらの新機能のいくつかについて紹介します。使用してアプリケーションのパフォーマンスを向上させることができるのかについても説明します。行っていることの基本事項を簡単に見ていきましょう。コードにコンパイルされます。よって再利用されます。したがって、新しいプロセスでこのコードが必要となった場合には、その都度再生成されます。コードを生成することですが、実行時ではなく個別の手順として実行されます。コードを使用できるよう維持されます。ユーティリティを指します。格納するすべての情報に対しても使われます。イメージを持っているかという情報も含まれます。キャッシュに格納されます。イメージを検索、ロード、使用します。イメージのトラブルシューティング』も参照してください)。技術には、いくつかの重大な欠点がありました。対するものだとしても、依存関係がありました。イメージには、アセンブリに依存関係があるという仮定に基づいたコードとデータ構造が含まれていました。そのため、それらの依存物の変更に対して、非常に脆弱になっていました。コンパイルが使われます。これは、多くのアプリケーションで共用されるコンポーネントが更新される場合を考えると特に問題です。イメージが無効になります。当初、考えられたアプローチがいくつかあります。イメージから脆弱な相互依存関係を実際に取り除くことです。相互依存関係のほとんどは、アセンブリにまたがったメソッドのインライン化など、コンパイラの最適化に起因するため、この方法ではパフォーマンスに悪影響が出てしまい、トレードオフとしては許容できませんでした。イメージとその依存関係の管理をできるだけ自動化し、共有コンポーネントが更新されても、アプリケーションのパフォーマンスが影響を受けるかどうかを開発者が心配しなくて済むようにすることです。ツールのインターフェイスが変更され、利用モデルが新しくなりました。起動するようになりました。(最上位のアセンブリとは、他のアセンブリからの依存関係がないアセンブリです)。(これは、アセンブリのマニフェストに記録されている静的な依存関係だけに適用されます。よって検出されません)。イメージを再生成できるようにします。この追跡および更新のメカニズムに加えて、遅延コマンドもサポートされるようになりました。サービスによるコマンド処理が可能だということです。キューでは単純な優先度スキームがサポートされており、複数のジョブをキューに送る際に、アプリケーションがプリコンパイルされる順序を指定できます。バックグラウンドのコンパイルを行う際に、コンピュータがアイドル状態になるのを待つかどうかも、優先度によって決まります。イメージを更新する機能と組み合わせて使用すると特に便利です。更新コマンドの完了を待たずにコンポーネントの更新インストーラを終了したい場合があります。サービスがバックグラウンドでコンパイルしてくれます。実行されるような機会を減らすことができます。ドメイン間で共有できます。ドメインでしか使用できませんでした。使うことで得られるパフォーマンスの向上がかなり失われていました。イメージを使用できませんでした。イメージだけを使ったリフレクションが完全にサポートされたことです。つのシナリオが解消されます。使用される場合もわずかにありますが、そのようなケースはまれです。(英語)で説明されていますので、参照してください。焦点を当てた、規模は小さいながらも効果的なパフォーマンス向上のための仕組みがたくさん実装されています。対象としたアプリケーションで最大のパフォーマンスを得るために最も有効な方法です。優れた機能を持っていることははっきりしましたが、いつ使用すべきなのかはどうすればわかるのでしょうか。アプリケーションのためにいくつかのことを行います。ページを削減し、これがシステム全体のメモリ使用量に良い影響を与えます。アプリケーションの起動時間も短縮されます。これらについて順に説明します。コンパイラが起動されます。割り当て、コンパイル済みのマシン語コードをそのメモリに書き込みます。場合と比較して、いくつかの方法でメモリ使用量が削減されます。コンパイラ自体がメモリにロードされません。実装され、必要な場合にだけランタイムによってロードされます。使用するアプリケーションでは、一定量のメモリ消費が削減されます。よってロードされます。よって複数のプロセス間で共有できるということを意味します。ページを使用できるため、そのプロセス用にコミットされる新規ページの数を減らすことができるという効果があります。イメージを使用するアプリケーションのすべてのインスタンスに対する、システム全体で必要なメモリの合計量もその分減少します。よってアプリケーションの起動時間も短縮されます。よりコンパイルされます。イメージを使用した場合、起動時間が大幅に短縮されることがわかっています。スタートの場合に限定されます。イメージのコードの多くがディスクからメモリにロード済みの場合です。恩恵は受けられません。常に最善の選択肢というわけではありません。パターン、コードとデータがファイル中でどのように配置されているか、モジュールの境界にまたがって何回呼び出されるか、必要なインフラストラクチャのうちどれだけが他のアプリケーションによってすでにロードされてメモリに存在しているかといった要素が関係します。いったさまざまな要素のために分析は困難になりますが、重要なのは、アプリケーションを測定することで得られる実際の数値です。パフォーマンス設計者が力説するところによれば、最善策を見出す唯一の方法は、アプリケーションの測定を慎重に、さまざまな構成で繰り返し行うことです。説明しておくべきことがあります。使用するメリットはありません。ローダーは追加の検証を実行します。使用することで得られる起動時間の短縮の効果が通常すべて帳消しになってしまいます。パフォーマンスについては、はるかに詳しい議論がオンラインで提供されており、単純な検索で簡単に見つかります。つの新機能がハードバインディングです。優れている場合があります。すべてのモジュールのコードとデータの仮想アドレスについてのより完全な情報を持ち、実際の仮想アドレスをターゲットとして使用して呼び出しやデータのロードを行うコードを作成できるためです。他のアセンブリにある対象を呼び出したりデータにアクセスしたりする際に、コード内に従来のようにスタブを生成します。ページが書き込み可能となるため、共有できなくなります。なくすことができます。イメージは非常に緊密に結びつけられたものとなってしまいます。イメージを同時にロードしなくてはならなくなります。起動時のパフォーマンスという面からは、すべてのアセンブリを起動時にロードしない、通常の状況下では、好ましくない影響となります。使うことで指示を与えることができます。後者の属性は依存される側で設定し、その依存物がどの程度頻繁にロードされるかを指定します。