复杂方程的 C++ 编译器优化

标签 c++

我有一些方程涉及多个运算,我想尽快运行。由于 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/

相关文章:

c++ - Lambda 返回引用会导致段错误 - 为什么?

c++ - 使用 SDL 的智能指针

c++ - 当使用按值调用时,实际参数值被压入堆栈。通过引用调用呢?

c++ - 为什么缓冲区获得垃圾值?

C++ 撤消命令/反转到以前的状态

c++ - boost::asio::io_context::run_one_for() 无法发送大缓冲区

C++ std::copy 结果不同于字符串构造函数

c++ - 需要帮助修改 C++ 应用程序以在 Linux 中接受连续的管道输入

c++ - 如何解决静态方法内部的 lambda 内部的歧义?

c++ - 这个围绕 std::future::then 的便利包装器有名称吗?