2016-10-17 14 views
0

XcodeでC++コンパイルタイムをプロファイルして最適化するにはどうすればよいですか?Xcode - C++コンパイル時間のプロファイルと最適化

私は現在250以上のソースファイルを持つCocos2d-xに基づくC++ゲームプロジェクトに取り組んでいます。コンパイル時(Cocos2d-xなし)は現在約3.5分です。コンパイラがどこで最も多くの時間を費やしているのか、それを最適化するために何ができるのかを知りたいと思います。

私はすでに常に前方宣言を行い、 "あなたが使うものを含める"パラダイムを適用するような最も明白なことをしました。

コンパイラはXcodeの8の最新クラン/ LLVM

+0

プリコンパイル済みヘッダーを使用していますか?それは私がそれらなしで継承した1つのプロジェクトでスピードアップ要因4を与えました。 – gnasher729

答えて

2

あなたはいつもccacheを試すことができます。プロジェクト設定でCCを再定義すると、Xcode内でうまく動作します。 https://ccache.samba.org/

たとえば、brew install ccacheでccacheをインストールします。例えば

#!/bin/sh 
if type -p /usr/local/bin/ccache >/dev/null 2>&1; then 
    export CCACHE_CPP2=true 
    exec /usr/local/bin/ccache "${DEVELOPER_DIR}/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang" "[email protected]" 
else 
    exec "${DEVELOPER_DIR}/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang" "[email protected]" 
fi 

呼び出して「ccacheの-打ち鳴らす」: は、このようなものです、あなたのプロジェクトのソース管理に保つスクリプトを作ります。このスクリプトをプロジェクトのソースコントロールに保存するということは、ccacheがインストールされていない別のマシンでチェックアウトできることを意味し、デフォルトのClangコンパイラを使用するだけです。

Xcodeのプロジェクトのビルド設定で、 "CC"の "User Defined"設定を追加し、スクリプトのパスに追加します。例えば、「${PROJECT_DIR}/ccache-clang」。

この記事はこれを実現するための素晴らしい資料です。 https://pspdfkit.com/blog/2015/ccache-for-fun-and-profit/

+0

しかし、Xcodeはすでにそれを行っていませんか?あなたはCCをどのように再定義しましたか?プロファイリングや最適化に役立ちますか? – keyboard

+0

Xcodeはできる限りファイルの再コンパイルを避けますが、ccacheは実際にディスク上のキャッシュからコンパイルを実行するため、きれいな再構築でさえずっと高速になります。 – yano

+0

私は今セットアップしましたが、それはかなりうまくいくようですが、(まだ)大きな改善はありません。私はここでいくつかのキャッシュヒットを持っているが、それは新しいコンパイル時のほとんどです。また、記事の設定で試してみました。私にはいくつかのヒントがありますか?その問題の一部は、Xcodeが派生したデータフォルダで再生するために発生する可能性があります( – keyboard

1

ディレクトリ/tmp/xcode_build_timingsを作成し、プロジェクトを再構築してください。 (後で削除することを忘れないでください)。

+0

これは興味深いと思います.... ?それは何をするためのものか?フォルダはどこにあるべきですか? – keyboard

+0

フォルダの正確なパスを指定しました。だから私はあなたが「正確にどこにフォルダを置くべきか」ということを理解していないのですか? 次に、このフォルダを作成した後にプロジェクトを構築し、内容を確認してください。それはビルドのタイミングを提供するはずです。 – Joky

+0

さて、意味があります。 – keyboard

関連する問題