12

シナリオ: 約 7000 以上のファイルを持つ iOS ゲーム用の XCode プロジェクトがあります。

1000 以上のファイルのみがコードです。それらの残りは、画像、サウンド、レベルデータ、XIB、plist、構成ファイルなどです。

これはユニバーサル アプリであるため、古い iPhone、Retina iPhone、iPad などに個別のリソース セットがあります。また、さまざまなハードウェアを最大限に活用するために、BG 画像などのいくつかのものには PNG と PVRTC もあります。

問題:

現在、プロジェクトの所要時間は約

クリーニングに 42 秒 (Cmd - Shift - K)

完全な再構築 (Cmd - B) の場合は 8.3 分 (再構築中、プログレス バーの半分が 1 分でいっぱいになります)

aaaand...実行するだけで 5 分 36 (Cmd - R) ??

その後、「停止」を押して、他に何もせずに「実行」をもう一度クリックしました。「もう一度実行する」だけで2分40秒かかりまし

また、プログレス バーの上に XCode が示すように、リソースが再度コピーされ、一部のファイルが再度ビルドされることもわかりました。

これらのフェーズのいずれかで時間を短縮するためのソリューションは高く評価されています。お願いします ?

PS プロジェクトは XCode の 3 日間で開始され、新しい XCode がリリースされるたびに xcodeproj ファイルを自動的に更新しています。

4

2 に答える 2

7

あなたが探しているのは、debugのコンパイル時間と起動時間を改善することですよね? では、プラットフォームごとに異なるターゲットを作成するのはどうでしょうか? したがって、同じコードを保持しますが、デバッグ デバイスに応じて、デバッグ目的でリソースのサブセットのみをパッケージ化します。

これを行うには、実際のターゲットに移動し、右クリックして複製します。あなたの実際のターゲットはそのままにしておいてください、それは太ったものです!新しいターゲットについては、iPad Retina としましょう。「ビルド フェーズ」 -> 「バンドル リソースのコピー」に移動し、iPad Retina に関連しないすべてのリソースを削除します。すべてのプラットフォームで同じことを行います。

次に、Xcode の左上で、特定のデバイスに適したターゲットを選択します。おそらく、ターゲットに受け入れられるデバイスを定義できます。

継続的インテグレーションを使用する場合は、夜間にビルド マシンでファット ターゲットをコンパイルさせます。

于 2013-01-22T11:04:05.633 に答える
6

問題の原因が不明な場合、問題を解決することはできません。「私の車はもう始動しません。再び始動させる方法はありますか?」; 最も可能性が高いのは、現在開始を拒否している理由がわかっている場合のみです。Xcode に "Build fast" という名前の魔法のスイッチがあり、それを有効にすることですべてがはるかに高速になることを期待しているように聞こえます。そんなスイッチがあったら、デフォルトで有効になっていると思いませんか?実際には常に有効になると思いませんか?

また、なぜこの質問に「コンパイラ」と「コンパイラ最適化」のタグを付けたのだろうか。あなた自身の声明によると、コンパイルには 8.3 分のビルド時間のうち 1 分しかかかりません。コンパイル時間がゼロになったとしても、ビルド時間は 7.3 分になります。間違った端で最適化しないでください。

コードの最適化のようなものです。コードが遅すぎる場合、コードのどこでほとんどの時間を費やさなければ、すべての最適化は無意味です。コードの一部を最適化して 10 倍高速に実行しても、そのコードに費やされる時間全体の 0.1% しかない場合、全体的なパフォーマンスには何の影響もありません。コード最適化の最初のステップは、コードのプロファイリングを行い、コードのどの部分にどれだけの時間が費やされたかを調べることです。

したがって、ビルド プロセスを高速化するための最初の最も重要なステップは、現在ビルド時間が正確に遅い理由を突き止めることです。その知識がなければ、人々がここで与えることができるすべての答えは、ただの推測にすぎません。問題がどこにあるかを正確に把握できたら、戻って、これを 1 ステップ速くする方法を正確に尋ねることができます。最も遅いステップを最適化することから始め、次に 2 番目に遅いステップ、というように最適化します。

Xcodeのビルドログを見てください

ここに画像の説明を入力

必ず「すべてのメッセージ」を選択してください。そうしないと、警告とエラーのみ、またはエラーのみが表示されます。ここで、クリーン ビルドを開始し、左側にポップアップする新しいログを選択して、このログを監視し続けます。Xcode が操作を開始するタイミングと、次の操作に近づくタイミングを正確に確認できます。これにより、完了するのにかなり時間がかかるタスクの第一印象が得られるはずです。そして、それらがどのタスクであるかを教えていただければ、このタスクをいくらか高速化する方法を提案し始めることができます.

于 2013-01-22T11:54:33.470 に答える