ゲーム作りが大好きな人のブログ

ゲームを作るのが大好きな人のブログ。UE4とBlender、MAYA(LT)、3DCoatを使用しています!

【UE4】【C++】今更ながらIWYUを適用し、ビルド時間を測る

久しぶりのUE4ネタの更新です。
IWYUってなんぞや?って人はこちら。
基本的にはプログラムをかじっている人メインの話です。
ちなみに最近のUE4ではデフォルトONになっているようです。
docs.unrealengine.com
 

経緯

Blenderがいい感じに煮詰まってきておりUE4と連携する機会が増えてきました。
現時点ではUE4.23を使用しているのでUE4.24へとアップグレードしようと考えています。
その際まだIWYUをやっていなかったのでやる事にしました。
 
 

IWYUの利点

公式マニュアルから引用

IWYU を使うと、各ファイルは必要なものと使用することにした PCH ファイルのみをインクルードし、
純粋に基本となるソース ファイルに加えて最適化のレイヤーとなります。
ソール ファイルそのものの変更をせず、また、コードのコンパイル化に影響も与えずに、
ビルド時間を最小に変更することができます。

要約するとビルド時間が短くなります。
多分やっている事は下記と同じに近い気がしますが
UE4の場合は自分でinclude整理しただけのような気がしないでもない。
qiita.com
 
 

おおまかな環境

現在のcppファイル数 : 284
PCのCPU性能 : i7-6800K 3.40GHz (12 CPUs)

ということで結果はコチラ

現在のプロジェクトを何度かリビルドし一番小さいビルド時間を取得しています。

IWYU

1>Total time in Parallel executor: 50.51 seconds
1>Total execution time: 59.17 seconds

以前の

1>Total time in Parallel executor: 57.28 seconds
1>Total execution time: 65.76 seconds

6.5秒くらい短縮しました。
 
 

でも気になる点もアリ

モジュールは

 ・ゲームモジュール
 ・ゲーム用エディターモジュール
 ・ロードスクリーンモジュール

の三つがあるのですが上二つをIWYUに対応しました。

ゲームモジュールは特に問題なかったのですが
ゲーム用エディターモジュールを対応した時に逆にビルド時間が長くなりました。
詳しい原因はわかりませんが依存関係が原因と思い
includeを整備したらビルド時間が短くなりました。
何が言いたいかというとincludeをうまく整備しないと
ビルド時間を増やす要因にもなりかねるんじゃないかな、という事です。

この辺りはある程度C++触っている人じゃないと
変な依存関係作りやすいと思うので結構敷居が高く感じちゃいますね。
参考文献を少し。
qiita.com
qiita.com
 

最後に

今更ながらIWYUを適用した検証結果でした。
次回はUE4.24にアップグレードするぞい!