3

それぞれ 20,000 行から 120,000 行までのソース ファイルがあります。それらは単純な (非常に長い) 関数で構成されており、(Apple の API の - たとえば Quartz の) C メソッドへの長い一連の呼び出しだけであり、コンパイルが容易なはずです。

ただし、Xcode はそれらをコンパイルするのに何時間もかかり、xcodeproj ファイルが変更されるたびに再コンパイルが強制されるようです (xcode のバグ?)。また、アーカイブ (App Store へのアップロード用) を実行すると、とにかく完全な再コンパイルが発生します。

これらのファイルはばかげた長さです - これらはコード生成ツールの出力です - そして私は最終的にそれらを小さくすることができるかもしれません - しかし確かにこの長さのファイルでclangを適切に動作させる方法はありますか?

私が試したこと:

  1. 32 ビット モードで実行 - 不可能: Apple はこの機能を削除しましたhttps://stackoverflow.com/a/9791396/153422
  2. CPU / コアを追加する - ごくわずかな影響: clang はほとんどの操作でシングルスレッドです
  3. RAM を追加 - 無視できる効果: 8 GB RAM は 2 GB RAM よりも目立って優れているわけではありません (驚くことではありません: ファイルは 1 つだけです - ギグ単位のメモリを使い果たす可能性はほとんどありません!)。
  4. SSD ドライブを追加 - 小さな効果: わずかに遅い CPU + SSD を搭載したラップトップは、わずかに高速な CPU + 通常の HD を搭載したデスクトップよりもわずかに高速 (10%?) にコンパイルされます。
  5. SVG/GIT 統合を無効にする - 効果なし: Apple の SVN の実装は非常にバグが多いため、すべてのプロジェクトで既に無効にしています。
  6. OS X のインデックス作成を無効にする - 小さな効果: Apple の Spotlight / バックグラウンドのインデックス作成がさまざまな点で壊れています。オフにすると、ビルド時間が少し速くなりましたが、Xcode が全体的に速くなったためかもしれません。
4

2 に答える 2

1

考えられるアプローチ:

  • pbxbuildを使用して、makefile を使用するようにプロジェクトを変換します
  • gmakeオプションで呼び出します-j [n](適切な n を試してください)

利点:

  • xcodeproj ファイルの変更なし
  • 並列コンパイルの活用
于 2012-09-17T08:02:57.827 に答える
0

非常に長い関数 (数千行) を生成している場合は、それらを複数の小さな関数に分割することを検討してください。

最適化レベルを -O0 または -O1 に設定することもできます。

また、http://bugreporter.apple.comでレポートを提出してください。

于 2012-09-18T07:43:53.107 に答える