很多时候我们都只把注意力放在 i++和++I 上,
它们的区别只是一个先加再用和先用再加而已,而这三者的运行效率很少有人考虑;
今天老师问到才去探究;
i = i + 1 ,i + = 1及 i++ 的效率哪个最高?为什么?
首先 i = i + 1最低,因为它的执行如下:
首先 i = i + 1最低,因为它的执行如下:
(1) 读取右i的地址;
(2) x+1;
(3) 读取左i的地址;
(4) 将右值传给左边的i(编译器并不认为左右i的地址相同)。
i+=1其次,它的执行如下:
(1)读取i的地址;
(2)i+1;
(3)将得到的值传给i(因为i的地址已经读出)。
i++最高,它的执行如下:
(1)读取右x的地址;
(2)x自增1.
但是,在实际编译的时候,因为编译器会自动优化,所以这三种执行效率貌似看不出什么区别;