【发布时间】:2012-02-17 16:55:25
【问题描述】:
我想在速度和准确性方面写出好的陈述。如果我没记错这一行:b=(a+1)*a 会产生比这更好的程序:b=(a^2+a)。
这只是一个示例,可能是错误的,但现在无关紧要,问题是:我在哪里可以找到科学计算的良好实践纲要?
【问题讨论】:
-
我的目标是可读性。只有当你有证据表明它还不够好时,优化才是重点。编译器为你做了很多:)
-
不幸的是,除了可读性之外,还需要考虑数值稳定性,在这种情况下,可读版本应该在 cmets 中。
-
a^2和a*a不是同一个东西。 -
@MarcoS:前者是异或运算;后者是产生指数运算的乘法,相当于
std::pow(a, 2)。在 C++ 中,就是这样。你的问题被标记为c++。
标签: c++ math optimization