【发布时间】:2015-07-15 10:35:25
【问题描述】:
我一直在尝试 C++,我对两个脚本的性能特别感兴趣。 一个小介绍:
我有一个名为 Point 的类,用于试验极坐标中给出的点。该类包含两个私有 double 变量,通常的函数 get、set 和公共函数 rotate,它接受一个 double 参数并将其以极坐标形式添加到我们当前的角度,以生成一个新的 Point 对象。
下面是两个不同的函数rotate脚本:
void Point::rotate(double theta) {
double A = getA();
A += theta;
setA(A);
}
void Point::rotate(double theta) {
setA(getA() + theta);
}
我的问题很简单:
哪一个实际上更快?为什么?
我知道第一种方法必须使用 getA() 然后将其保存到变量 A 中,因此很可能需要更长的时间/效率更低。 更一般地说,在计算表达式时,是否需要将大部分表达式保存在其他变量中然后使用这些? (夸张地假设写代码的“人”不会出错,以后可能需要阅读代码的每个人都会完全理解。)
一个简单的例子来澄清我的问题:
假设我们要计算 a+b+c。将 a+b 保存在一个新变量中是否更好,比如 d,然后将 d 添加到 c 中?用另一个函数求值调用一个带参数的函数怎么样?
提前致谢!
【问题讨论】:
-
为什么不测量? (如果真的很重要)
-
他们可能会产生相同的代码。 (C++ 不是“脚本”,它的“源代码”或只是“代码”)。
标签: c++ performance