【问题标题】:How to maximize the use of the number 0 to optimize a program [closed]如何最大限度地利用数字 0 来优化程序 [关闭]
【发布时间】:2015-03-06 00:42:02
【问题描述】:

我在一个 C++ 大会上听讲座,演讲者说他更喜欢零而不是所有其他常量:

“零是特殊的,因为机器内部有一堆操作 任何 CPU 架构的语言都内置零。”

(https://www.youtube.com/watch?v=ea5DiCg8HOY)

这里有人可以给我一个利用积分 0 使程序更快的具体例子吗?我有兴趣在我编写的程序中开始这样做。

真诚地, Mike Rowe 优化器

【问题讨论】:

  • 今天没关系。优化编译器会比你做得更好。
  • @BasileStarynkevitch 那他为什么要在去年的会议上提出这个问题?
  • 点击链接的视频,右边第一个推荐的视频是同一作者Don't help the compiler
  • 在所有其他条件相同的情况下,缓存未命中的成本比使用 >0 与 >1 测试的成本;在完全缓存未命中时从 RAM 模块获取数据的时间可能是数百个周期。

标签: c++ optimization cpu hardware


【解决方案1】:

多年前的经典示例是从 N 倒数到 0,而不是在方向与程序逻辑无关的情况下从 0 倒数到 N。如果你的 CPU 有一个比递增、比较和条件分支更有效的指令,这甚至可以利用“如果不为零则递减和跳转”指令。

【讨论】:

  • Intel 乱序 x86 实现已经在一段时间内识别并处理了主要执行单元之外的显式归零。这避免了使用重命名寄存器(寄存器别名表指向公共零值)和使用执行功能(包括指令调度和寄存器文件写入端口)。
猜你喜欢
  • 1970-01-01
  • 2023-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-13
  • 1970-01-01
相关资源
最近更新 更多