BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース .NET Core 2.1、階層型コンパイルをプレビューに

.NET Core 2.1、階層型コンパイルをプレビューに

原文(投稿日:2018/08/18)へのリンク

.NETが使用するJITコンパイルプロセスは、つねに2つのコンパイル目標であるアプリケーション起動時間を早くすることとアプリケーションの定常状態でのパフォーマンスをよくすることのバランスを取らねばならなかった。エンドユーザの観点から、開始時にJITが定常状態のパフォーマンスがもっともよくなるよう停止をすると、アプリケーション起動速度が遅いと認知される影響がある。一方、JITがより早くアプリケーションを起動しようとすると、アプリケーションの定常状態でのパフォーマンスは二の次となってしまう。

この対立を解決する取り組みで、マイクロソフトのNoah Falk氏が.NET Core 2.1での階層型コンパイルの提供を発表した。これでJITは多様なコンパイルができるようになり、パフォーマンス全体をもっともよくする効果を考え実行時にホットスワップできるコードを生成することができる。最終的にアプリケーションの起動は早く、そして定常状態でのパフォーマンスもよいという結果になる。

この機能はまだプレビュー状態のためデフォルトでは有効ではないが、.NET Core 2.1アプリケーションであれば有効にする方法がいくつかある。コンパイルできるアプリケーションなら、単純にMSBuildのプロパティ<TieredCompilation>true</TieredCompilation>をプロジェクトのデフォルトプロパティグループに追加するだけだ。

すでにコンパイルされたアプリケーションを実行していてソースを持っていないのなら、runtimeconfig.jsonファイルのconfigPropertiesセクションに新しいプロパティSystem.Runtime.TieredCompilation=trueを設定する。

あとは、環境変数COMPlus_TieredCompilation=1を使いファイルを変更せずに階層型コンパイルを有効にすることもできる。

現時点では依然として.NET Core特有の機能で、.NET Frameworkへの展開は予定されていないことに注意すべきである。この新しい技術に興味があり試してみたい開発者は、マイクロソフトがGitHub上に設けたJitBenchプロジェクトを見ながら結果を比較することもできる。

 
 

Rate this Article

Adoption Stage
Style
 
 

この記事に星をつける

おすすめ度
スタイル

BT