BT

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

| 作者: Jeff Martin フォローする 16 人のフォロワー , 翻訳者 h_yoshida フォローする 1 人のフォロワー 投稿日 2017年9月3日. 推定読書時間: 2 分 |

原文(投稿日: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など他のプラットフォームの追加は、今後のユーザからのフィードバックを見て検討する予定だ。

 
 

この記事を評価

採用ステージ
スタイル
 
 

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT