【发布时间】:2011-01-29 21:03:46
【问题描述】:
我正在用 c 编写一个用于 iphone 的游戏,在遇到一些性能问题后,我决定使用工具来检查瓶颈在哪里,我发现文字类型没有得到优化。
例如:
if(x == (float)3) {....}
如果我这样写,运行速度会更快:
if(x == 3.0f) {....}
为什么编译器没有对其进行优化?
我在发布模式下使用 gcc。
【问题讨论】:
-
你看过生成的目标代码吗?
-
什么是“发布模式”?我认为 GCC 没有
-release-mode标志。 -
@Chris Lutz:可能正是 Xcode 所称的发布配置(与调试配置相反)。
-
我很好奇你是如何计算这两个语句中的差异的。即使有差异,它也将是如此微不足道,以至于它不会出现,更少你做了数十亿次。您是否检查了生成的目标代码以了解指令的差异?
-
我尝试在我的 ubuntu 上使用 gcc 编译一个小例子,生成的汇编代码对于
(float)3和3.0f都是相同的,都禁用或启用了优化。
标签: gcc compiler-construction compiler-optimization