MSDN マガジン: 注目記事

Silverlight 4 の驚異的なパフォーマンスを支える新 CLR - ランタイムと基本クラスの強化

更新日: 2010 年 11 月 12 日

この記事は オンライン版月刊技術情報誌 MSDN マガジンの中から特におすすめの記事を解説したものです。MSDN マガジンの本文は「Silverlight 4 の新機能とパフォーマンスの向上」を参照してください。

Silverlight 4 は、前バージョン Silverlight 3 に比べ、実行速度において、著しいパフォーマンスの向上を実現しています。この秘密は、Silverlight 4 の新 CLR (共通言語ランタイム) にあります。実はこの新 CLR では、ランタイムと基本クラスの両方が強化されています。

ここで Silverlight のアーキテクチャをおさらいしておきましょう。下図の通り、Silverlight プラットフォームは、入力、UI レンダリング、メディア、Deep Zoom、コントロール、レイアウト、データ バインディング、DRM、XAML 等から構成されるプレゼンテーション コアと、データ (LINQ や LINQ to XML)、基本クラス ライブラリ、Windows Communication Foundation (WCF)、CLR (共通言語ランタイム)、WPF (Windows Presentation Foundation) コントロール、DLR (動的言語ランタイム) 等から構成される .NET for Silverlight、という 2 つの主要パーツ、そしてインストーラーと更新コンポーネントによって、構成されています。

このうち、.NET Framework for Silverlight は、.NET Framework のサブセットで、堅牢なオブジェクト指向のアプリケーション開発の基本機能を備えており、これを利用することで、高度な RIA の構築が可能です。そして、Silverlight 4 になって、この中の CLR (共通言語ランタイム) が大きく進化したことにより、驚異的なパフォーマンスを実現できるようになったのです。

図 Silverlight のアーキテクチャ

図 Silverlight のアーキテクチャ

Note: Silverlight のアーキテクチャの詳細は下記の URL をご確認ください。

具体的には、新しい GC (ガベージ コレクター) の動作、Silverlight Framework アセンブリで NGen が実行されるようになったこと、および分離ストレージのパフォーマンスが向上したことで、アプリケーションの起動時間が短縮され、Silverlight 4 での実行が強化されています。また、BCL (基本クラス ライブラリ) の機能強化によって、アプリケーションでは少ないコードで多くの処理を実行できるようになり、信頼済みのアプリケーションからファイル システムにアクセスできるようになったことから、これまでには実現できなかった Silverlight アプリケーションが実現できるようになりました。以下、個別に解説していきましょう。

新しい GC の動作には、世代別の GC、同時実行 GC の問題点を解決するバックグラウンド GC が追加されました。これによる、プログラムの遅延に対する効果は絶大であり、バックグラウンド GC を実行すると、プログラムの実行が中断される回数が大幅に減少し、中断された場合でも中断時間が短くなります。

NGen は、.NET Framework コードをインストール時にコンパイルします。そのため、プログラムの実行開始時には既にコードがコンパイルされています。NGen でコンパイルされたコードは多くの場合複数のプログラムで共有できるため、複数の Silverlight プログラムを実行するときに、ユーザーのコンピューター上のワーキング セットが減少します。
さて、これまでの Silverlight の進化に合わせて、マイクロソフトは、エクスペリエンスを向上し続けるために、改良をし続けてきました。そして Silverlight 4 では、Silverlight 3 から登場した OOB (ブラウザー外実行) の強化や Windows 7 でのタッチ入力のサポート、そして Bing Maps Web サイトで使用されている機能豊富な写真操作など、大量のコンピューター処理を実行する新機能が多数追加されました。このようなシナリオでは全て、実行効率を上げるためにコードを最適化する必要があります。そこで、Silverlight 4 では、起動時のパフォーマンス向上とコードの最適化が必要となる訳です。
しかるに、Silverlight の .NET Framework アセンブリに対して NGen が有効になったために、最適化の実行が可能になったのです。
Silverlight のインストール時のランタイムのマネージ コードの自動コンパイルや、Silverlight プログラム実行時の .NET Framework コードのコンパイルを経ないプログラム実行開始等がその例といえるでしょう。また、プログラムの実行速度向上のために Silverlight のコードが最適化されたため、同じコンピューター上で実行される複数の Silverlight アプリケーションの間で .NET Framework コードを共有可能となったのです。

そして、Silverlight 4 で追加された、BCL (基本クラス ライブラリ) の機能強化の多くは .NET Framework 4 の新機能です。Silverlight コードでの事前条件、事後条件、およびオブジェクト インバリアントを指定する組み込みの手段が提供されるコード コントラクトや、SDK において多くのデータ型や便利なメソッドが利用できるような改良がなされました。

更に、分離ストレージの機能が一部強化されました。特に Silverlight 4 での分離ストレージの特筆すべき機能強化は、パフォーマンス面での機能強化のためのメソッド等の追加です。そして、OOB (ブラウザー外実行) の信頼された Silverlight アプリケーションから、System.IO を使用してファイル システムの一部に直接アクセスできるようになりました。

このように、Silverlight 4 では、ランタイムと基本クラスが強化された新しい CLR により、その驚異的なパフォーマンスの向上を実現しています。是非、この機会に Silverlight 4 でのアプリケーション開発にご着手ください。

ページのトップへ