C++ 复合赋值操作符性能

继续学习C++。

看到+=, -=, *=, /=以及其他复合赋值操作符号的时候,虽然以前学C的时候老师就讲过:这种方式的速度比相应的 A = A + B, A = A * B要快,因为对于前一种方式,左操作数只取了一次。

这不,正好前几天用到了clock()这个函数,那写个demo来看看到底快多少,于是有了下图所示的代码。

用三个变量记录了一下从程序开始,到调用clock()时,这段期间的时钟周期数。

对于常量“CLOCKS_PER_SEC”则是指每一秒的时钟周期个数,POSIX系统一般都是1,000,000

程序对两种方法分别执行了20亿次的加法运算记时,结果如下图所示,直接打印的是时钟周期数,而不是秒,如果要得到秒,用这个数除以CLOCKS_PER_SEC即可。

从结果看出,两种方式,20亿次加法运算,时间都是4.9X秒,差别非常小。并且,有可能第一种方式快,有可能第二种方式快,平均下来1:1。也有可能是哪里疏忽了,导致结果不对。

单从这次结果来看,无甚差别。

 

goodbye.

Leave a Reply

Your email address will not be published.