i++ 和 ++i 以及 i= i + 1 的运行效率

来源:互联网 发布:js清空页面内容 编辑:程序博客网 时间:2024/06/05 17:41
很多时候我们都只把注意力放在 i++和++I 上,
它们的区别只是一个先加再用和先用再加而已,而这三者的运行效率很少有人考虑;
今天老师问到才去探究;
i = i + 1    ,i + = 1及 i++ 的效率哪个最高?为什么? 
首先 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.

但是,在实际编译的时候,因为编译器会自动优化,所以这三种执行效率貌似看不出什么区别;
0 0