++i 與 i++ 在很多編程中都有,對變量的增加+1操作,但是有先后問題,下面我來介紹一下他們在運行是的一些區別.
1、++i 的用法(以 a=++i ,i=2 為例)
先將 i 值加 1 (也就是 i=i+1 ),然后賦給變量 a (也就是 a=i ),
則最終 a 值等于 3 , i 值等于 3 .
所以 a=++i 相當于 i=i+1 ,a=i
2、i++ 的用法(以 a=i++ ,i=2 為例)
先將 i 值賦給變量 a (也就是 a=i ),然后 i 值加 1 (也就是 i=i+1 ),
則最終 a 值等于 2 ,i 值等于 3 .
所以 a=i++ 相當于 a=i , i=i+1
3、++i 與 i++
a=++i 相當于 i++ , a=i
a=i++ 相當于 a=i , i++
4、++i 與 i++ 單獨使用時,相當于 i=i+1
如果賦給一個新變量,則 ++i 先將 i 值加 1 ,而 i++ 先將 i 賦給新變量.
性能優化
實例代碼如下:
- 方式一:
- $begin = time();
- $i = 0;
- while(++$i < 10000)
- {
- $j = 0;
- while(++$j < 10000)
- ;
- ;
- }
- $end = time();
- 時間 : 16s
- 方式二:
- $begin = time();
- $i = 0;
- while($i < 10000)
- {
- $j = 0;
- while($j < 10000)
- ++$j;
- ++$i;
- }
- $end = time();
- 時間:13s
- 方式三:
- $begin = time();
- $i = 0;
- while($i < 10000)
- {
- $j = 0;
- while($j < 10000)
- $j++;
- $i++;
- }
- $end = time();
- 時間:15s
- 方式四:
- $begin = time();
- $i = 0;
- while($i++ < 10000)
- {
- $j = 0;
- while($j++ < 10000)
- ;
- ;
- }
- $end = time();
時間:13s
對比第一種方法和第二種方法, 因為在PHP中, 最終被執行的是OPCODE, 每行opline都有倆個操作數, 對于操作數來說, 一般有3種類型的存取方式, 臨時變量, 變量, 和編譯時變量, 這三種變量,其中, 存取最快的是第三種, 編譯器變量, 在OpCode執行過程中, 會講一個變量的加一級引用存儲在一個hash
新聞熱點
疑難解答