gpt4 book ai didi

c - 我应该自己优化我的代码还是让编译器/gcc 来做

转载 作者:太空狗 更新时间:2023-10-29 15:54:14 24 4
gpt4 key购买 nike

我正在编写一个 C 代码,我想知道使简单的操作(如乘法)对 CPU 更友好是否有任何不同并且代码更快。例如,替换这行代码:

 y = x * 15;

 y = x << 4;
y -= x;

编译器是否已经这样做了?我应该使用 -O2 选项来实现它吗?

最佳答案

答案分为两部分:

  1. 不,除非您正在编写一个非常专业的函数(例如,一个必须在 20 个时钟周期内执行的信号处理函数),否则您不应该进行优化;把它留给编译器。通常,您的工作是编写可读代码,编译器将(根据其能力对其进行优化)。请注意,不同处理器的优化会有所不同,因为它们的硬件(计算能力)可能非常不同。例如,按 N 条指令进行移位(就像您的代码中的那样)在具有常规移位器的处理器上可能需要 N 个时钟,但在具有硬件桶形移位器的处理器上只需要一个时钟(或更少)。
  2. 是的,大多数现代优化编译器将在没有显式优化选项的情况下进行优化(例如,在适当的地方通过移位替换乘法)。

总结一下,只在极少数情况下优化,当你已经知道编译器做得不好时,这是一个必须解决的问题,你知道如何比编译器做得更好,并由此增加维护成本是值得的。

关于c - 我应该自己优化我的代码还是让编译器/gcc 来做,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43220141/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com