Visual Studio Community 2015をインストールしたので、さっそくK-Shogiをビルドしてみました。
Visual C++の機能強化について
Visual Studio 2015のリリースノートに、Visual C++の機能強化ポイントが記載されています。
C++11の対応強化や、C++14の一部機能サポート、その他多数の機能追加が挙げられています。
その中でも、ガイド付き最適化のプロファイル(PGO)に関する以下の記述から、PGOの性能が上がっているのではないかと推測されますので、K-Shogiを使用して検証してみました。
K-Shogiのビルド
Visual Studio Community 2013で作成していたK-Shogiのソリューションファイル(.slnファイル)を開いたところ、自動的にVisual Studio Community 2015のプロジェクトに変換され、そのままビルドしたところ、問題なくビルドされました。
また、ビルドされたexeも問題なく動作しました。
ガイド付き最適化のプロファイル(PGO)の検証
PGO(プロファイルに基づく最適化)機能とは
PGOを使用すると、実行結果に基づいて最も頻繁に実行される領域に関する情報を使用して最適化が行われます。
通常の最適化に比べて実行速度が向上しやすいです。
PGOのビルド手順
Visual Studio Community 2013ではPGOのインストルメントや最適化はメニューから行うことができましたが、2015では若干ややこしいです。
一応、以下の手順で出来ました。(コマンドラインで行う方法もあります。)
- 「デバッグ」メニュー ⇒ 「XXXのプロパティ」を選択 ※XXXはプロジェクト名
- 「全般」 – 「プログラム全体の最適化」に「ガイド付き最適化のプロファイル – インストルメント」を選択
- リビルドする
- 「デバッグ」メニュー ⇒ 「デバッグの開始」
- 適当に動かす(最適化してほしいところを集中的に動かすとよい)
- 「デバッグ」メニュー ⇒ 「XXXのプロパティ」を選択
- 「全般」 – 「プログラム全体の最適化」に「ガイド付き最適化のプロファイル – 最適化」を選択
- ビルドする(リビルドではない)
PGOの検証結果
複数の局面での合計探索時間を調べました。(比較のために探索数などは一致するようにしています)
以下の結果は「Visual Studio 2013 PGOあり」を1としたときの時間の比率になります。
VS2013 PGOあり |
VS2015 PGOなし |
VS2015 PGOあり |
---|---|---|
1 | 1.017 | 0.936 |
「VS2013 PGOあり」から「VS2015 PGOあり」で7%程短縮されています。
「VS2010 PGOあり」から「VS2013 PGOあり」の時は2%程でしたので、今回はかなり高速化されています。
コーディングで7%高速化させるのは(十分頑張った後では)かなり大変なので、これだけでも「Visual Studio 2015」に移行したくなりますね。私は早速「Visual Studio 2015」に移行することに決めました。
また、「VS2015 PGOなし」でも「VS2013 PGOあり」に肉薄しているので、通常の最適化も性能が上がっているようです。
なお、「VS2015 PGOなし」から「VS2015 PGOあり」で8%程短縮されていますので、やはりPGOは有効ですね。