【问题标题】:gcc: why casts of literals are not optimized?gcc:为什么没有优化文字类型?
【发布时间】: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)33.0f 都是相同的,都禁用或启用了优化。

标签: gcc compiler-construction compiler-optimization


【解决方案1】:

很抱歉,正如 cmets 所说,我查看了目标代码并且是相同的。
Xcode 仪器逐行为您提供所花费的时间,我发现它不是 100% 可靠的。

【讨论】:

    猜你喜欢
    • 2016-11-29
    • 2010-09-12
    • 2021-11-22
    • 2017-07-18
    • 2016-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-30
    相关资源
    最近更新 更多