【发布时间】:2017-04-05 01:02:22
【问题描述】:
我正在编写一个 c 代码,我想知道如果让简单的操作(如乘法)更 CPU 友好,是否会有所不同,并且代码更快。比如替换这行代码:
y = x * 15;
与
y = x << 4;
y -= x;
编译器是否已经这样做了?我应该使用-O2 选项来实现吗?
【问题讨论】:
-
你真的不知道。我猜不,它不会优化这个,但我可能是错的。只需编写您的代码,对其进行分析,然后优化真正拖慢您速度的部分。过早的优化会导致很多问题。
-
事实证明,是的,gcc 6.3 对此进行了优化(如果您通过 -O2):godbolt.org/g/7ax85U
-
始终:首先编写有效的代码并编写测试以测试您的代码(及其性能)然后优化。这保证您的代码仍然可以正确执行,并且您的优化实际上会提高性能。
-
一般来说 1) 编写易于人类阅读/理解的代码 2) 优化在算法的逻辑中最有用,而不是像您建议的代码那样进行局部优化
-
@user3629249 你的第一点非常好:高级语言就是为了做到这一点——编写易于理解的代码。
标签: c gcc compilation