iPhone编译为拇指

时间:2009-09-22 14:19:57

标签: iphone compilation thumb

我听说在iPhone目标的设置中关闭“compile for thumb”以提高性能可能是个好主意。我找不到这个设置有些麻烦。由于我在我当前的项目中找不到它,我决定创建一个新的(我可以找到并设置它),并将我的文件复制到它(并同时更新我正在使用的所有库) )。

但现在看来这个设置也从这个新项目中消失了。无论我选择什么SDK,模拟器或设备,设置都不会显示在目标设置中!但我似乎仍然突然在“用户定义”类别下有一个名为GCC_THUMB_SUPPORT的变量。这是什么?

我尝试制作一个新目标,但该设置也不会显示在那里(甚至不是GCC_THUMB_SUPPORT)。

4 个答案:

答案 0 :(得分:14)

GCC_THUMB_SUPPORT是正确的变量。只需将其设置为NO即可禁用THUMB代码生成 THUMB的一般规则是,如果你的代码是浮点重的话,禁用它:) 关于here的更多信息。

<强>更新
为THUMB指令集编译的建议is no longer valid(实际上自iPhone 3GS以来)。

答案 1 :(得分:3)

我发现当Active SDK设置为Device时,编译器设置(“GCC 4.2 - 代码生成”,“GCC 4.2 - 语言”等)仅显示在目标信息构建设置窗口中 - “用户定义”类别仅在Active SDK为模拟器时显示。

是的,如果您处理大量浮点数学运算(例如浮点音频处理),​​禁用Thumb编译对性能有很大帮助。虽然它当然不是一个通用的神奇加速(并且在某些情况下可以说是Thumb编译的代码可以运行得更快),所以如果代码存在这种瓶颈,你可能只会发现禁用Thumb非常有用。 / p>

答案 2 :(得分:2)

“为Thumb编译”目标/获取信息/ GCC 4.2 - 代码生成之下。如果它不存在(如果不是,我会感到惊讶),设置用户定义的变量。

请注意,这只会在摆弄它之前应该了解的一小部分环境中提高性能。

答案 3 :(得分:2)

ARM的标准指令集是4字节。使用“Compile for Thumb”,编译器可以使用2字节指令。这导致了一个更小的库,但也是一个较慢的库(有点值得商榷)。更重要的是,在ARMv6下运行存在问题。在我们的例子中,我们无法从Monotouch生成稳定的输出(修复MT4.0 alpha)。在Xcode中,您可以通过单击Target找到该设置,然后在Build下查找并搜索“thumb”。我的是GCC 4.2 - 代码生成,但有时它属于LVVM GCC 4.2。

Compile for Thumb

相关问题