我听说这可能是一个好主意,在iPhone目标的设置,关闭“编译拇指”,以提高性能。我有一些麻烦,但发现此设置。因为我不能在我的当前项目找到它,我决定做一个新的(在那里我能找到,并将其设置),并复制我的文件交给它(并更新我使用的是在同一时间的所有库)。

但现在看来,这样的设置已经从这个新项目也disapperad。无论我选择什么样的SDK,模拟器或设备,设置不会在目标设置显示出来!然而,我似乎仍然有一个称为类别下GCC_THUMB_SUPPORT变量“用户自定义”所有的突然。这是什么?

我试图使一个新的目标,但在该设置将不会显示任一(未甚至GCC_THUMB_SUPPORT)。

有帮助吗?

解决方案

GCC_THUMB_SUPPORT是正确的变量。只要将它设置为NO禁用拇指代码生成。结果 一般的经验法则是,禁用它,如果你的代码是浮点重:)点击 更多有关这里

<强>更新结果 建议来编译Thumb指令集不再有效(实际上由于iPhone 3GS)。

其他提示

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

是的,禁用Thumb编译可以是表现一个很大的帮助,如果你正在处理大量的浮点运算(例如浮点音频处理)的。虽然它不是,当然,一个通用的神奇加速(和所谓的Thumb编译的代码可以运行在某些情况下会更快),所以你可能只发现禁用拇指有用的,如果你的代码有那种瓶颈。

“编译为拇指” 的是下的目标/获取信息/ GCC 4.2 - 代码生成的。如果它不存在(I会惊奇地发现,如果它不是),设置用户定义的变量。

请,这只有在一个狭窄的一套,你应该与它摆弄之前了解的情况下提高性能。

用于ARM的标准指令集是4个字节。使用“编译为Thumb”,编译器能够使用2个字节的指令。这导致一个更小的库,但还较慢的一个(有点值得商榷)。更关键的是,有与ARMv6的下运行的问题。在我们的例子中,我们无法生成的MonoTouch输出(固定在MT4.0阿尔法)稳定。在Xcode中,您可以按一下你的目标,并在构建寻找并搜索“拇指”的设置。矿是GCC 4.2下 - 代码生成,但有时是下LVVM GCC 4.2

“编译为Thumb”

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top