8

パフォーマンスを向上させるために、iPhone ターゲットの設定で「親指用コンパイル」をオフにすることをお勧めします。ただし、この設定を見つけるのに苦労しています。現在のプロジェクトでそれを見つけることができなかったので、新しいものを作成し (見つけて設定できる場所)、それにファイルをコピーすることにしました (同時に使用しているすべてのライブラリも更新します)。 )。

しかし今、この設定はこの新しいプロジェクトからも消えたようです. どの SDK を選択しても、シミュレーターでもデバイスでも、設定はターゲット設定に表示されません! ただし、突然「ユーザー定義」カテゴリの下に GCC_THUMB_SUPPORT という変数がまだあるようです。これは何ですか?

新しいターゲットを作成しようとしましたが、その設定も表示されません (GCC_THUMB_SUPPORT でさえ)。

4

4 に答える 4

14

GCC_THUMB_SUPPORT は正しい変数です。THUMB コード生成を無効にするには、NO に設定するだけです。
THUMB の一般的なルールは、コードが浮動小数点数が多い場合は無効にすることです:)
詳細はこちら.

更新:
THUMB 命令セット用にコンパイルするというアドバイスは無効になりました (実際には iPhone 3GS 以降)。

于 2009-09-22T14:23:55.443 に答える
3

コンパイラの設定 ("GCC 4.2 - コード生成"、"GCC 4.2 - 言語" など) は、アクティブな SDK が [デバイス] に設定されている場合にのみ [ターゲット情報のビルド設定] ウィンドウに表示され、[ユーザー-defined" カテゴリは、アクティブな SDK がシミュレーターの場合にのみ表示されます。

はい、多くの浮動小数点演算 (浮動小数点オーディオ処理など) を扱っている場合は、Thumb コンパイルを無効にするとパフォーマンスが大幅に向上する可能性があります。もちろん、これは万能の魔法のような高速化ではありません (また、Thumb でコンパイルされたコードは状況によっては高速に実行される可能性があります)。そのため、コードにそのようなボトルネックがある場合にのみ、Thumb を無効にすることが役立つことに気付くでしょう。

于 2009-11-02T10:03:02.567 に答える
2

「Compile for Thumb」はTarget/Get Info/GCC 4.2 - Code Generationの下にある必要があります。そこにない場合 (そうでない場合は驚くでしょう)、ユーザー定義変数を設定します。

これをいじる前に理解する必要がある限られた状況下でのみパフォーマンスが向上することに注意してください。

于 2009-09-22T16:32:06.137 に答える
2

ARM の標準命令セットは 4 バイトです。「Compile for Thumb」を使用すると、コンパイラは 2 バイト命令を使用できます。これにより、ライブラリははるかに小さくなりますが、ライブラリも遅くなります (やや議論の余地があります)。さらに重大なことに、ARMv6 での実行には問題があります。私たちの場合、Monotouch から安定した出力を生成できませんでした (MT4.0 アルファで修正)​​。Xcode では、ターゲットをクリックし、ビルドの下を見て「親指」を検索すると、設定を見つけることができます。私はGCC 4.2 - コード生成の下にありますが、LVVM GCC 4.2の下にあることもあります。

Thumb 用にコンパイル

于 2011-03-20T22:56:52.000 に答える