我有一些方程涉及多个运算,我想尽快运行。由于 c++ 编译器无论如何都会将它分解为机器代码,所以如果我将它分解为多行,如
A=4*B+4*C;
D=3*E/F;
G=A*D;
对比
G=12*E*(B+C)/F;
我的需求比这更复杂,但我认为它传达了这个想法。此外,如果这是在循环中被调用的函数中,那么定义双 A、D 是否会花费 CPU 时间而不是将其作为类变量放入?
最佳答案
使用现代编译器,Clang/Gcc/VC++/Intel,这并不重要,你应该做的最好的事情是担心你的代码的可读性如何并开启优化,编译器设计者很清楚这些问题喜欢这些并设计他们的编译器以(在大多数情况下)根据优化。
如果我要说哪种方式会更慢,我会假设第一种方式,因为会有 3 条 mov 指令,我可能是错的。但这不是您应该担心太多的事情。
关于复杂方程的 C++ 编译器优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25980014/