BT

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

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Profile Guided Optimizationが.NET Coreでも利用可能に

Profile Guided Optimizationが.NET Coreでも利用可能に

ブックマーク

原文(投稿日:2017/07/27)へのリンク

PGO (Profile Guided Optimization, プロファイルに基づく最適化)は、より高度に最適化されたコードの生成に使用される、ネイティブコンパイルのテクノロジである。この処理は2つのコンパイルプロセスで実現される – 最初のステップで実行に関する情報を記録し、第2のステップではその情報を用いて改善されたバイナリを生成する。MicrosoftのDaniel Podder氏とBertrand Le Roy氏によると、このプロセスが画期的なのは、イメージ内のバイナリコードのレイアウトを改善することにより、より優れたワーキングセットと参照の局所性が実現できる点にある。

.NET CoreにPGOを実装する大きな理由は、.NET Coreとランタイム、およびJITコンパイラにおいて、特別なアクションの実行を要求しなくてもPGOのメリットを享受できるからだ。結果として、マネージドアプリケーションには自動的にメリットがあるが、最終的なな改善度については、アプリケーションと使用方法に依存したものになる。

Podder氏とLe Roy氏によると、今回のリリースでは.NET Coreランタイムのネイティブ部分にPGO最適化が適用されているが、将来的には.NET Coreスタックのマネージドコンポーネントに対しても、これらの最適化を適用する予定である。.NET Core 1.1でリリースされたWindows x86専用のPGO最適化とは異なり、最新の最適化はWindows x64とLinux x64も対象とするように拡張されている。

.NET Coreアプリケーションのスタートアップ時間の75%以上がcoreclr.dllclrjit.dll(Linuxの場合はそれぞれlibcoreclr.solibclrjit.so)に費やされていることから、開発チームは、この部分でのパフォーマンスの計測と向上を目標にしていた。Microsoftのベンチマークでは、Windowsプラットフォーム(x64とx86両方)においては14%から23%という大幅な改善が見られる一方で、Linux x64の改善は2%から5%の範囲に留まっている。PGOを有効にしても性能劣化のない点は重要だが、Linux版には今後まだ改善の余地があることを示している。

Microsoftの広報担当者によると、同社がWindowsとLinuxをともに重要な展開目標と認識していることから、PGOテクノロジの最初のターゲットとして位置付けられている。macOSなど他のプラットフォームの追加は、今後のユーザからのフィードバックを見て検討する予定だ。

 
 

この記事を評価

採用ステージ
スタイル
 
 

この記事に星をつける

おすすめ度
スタイル

BT