C表达式 – 两者中哪一个更快?
我一直在尝试C,我对两个脚本的性能特别感兴趣.
小介绍: 我有一个名为Point的类,用于试验极坐标中给出的点.该类包含两个私有双变量,通常的函数get,set和public函数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中,因此最有可能的是,它需要更长时间/效率更低. 一个简单的例子来澄清我的问题: 假设我们想要计算一个b c.将b保存在一个新变量中更好,比方说d,然后将d添加到c?如何用参数调用函数另一个函数评估? 提前致谢! 解决方法
这两个表达式都是相同的.理想情况下,您总是可以运行一个基准测试,在该基准测试中,您可以在循环中多次调用表达式并查看时间差.
然而,另一种看待它的方法是回答问题的第二部分,即第二部分.当代码转换为汇编时,无论如何都将b存储在某个寄存器中,然后添加到c中,因为汇编中不存在3个图形添加的操作.所以,在以下方面没有区别: c = a + b + c 和 d = a + b c = c + d 此外,许多其他优化都是由编译器完成的,这导致这些事情没有区别. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |