主頁 > 知識庫 > i++循環(huán)與i-–循環(huán)的執(zhí)行效率(遞增與遞減效率)

i++循環(huán)與i-–循環(huán)的執(zhí)行效率(遞增與遞減效率)

熱門標簽:嘟聲的電銷機器人 醫(yī)院地圖標注 湖北穩(wěn)定外呼系統(tǒng) 洛陽便宜外呼系統(tǒng)廠家 滄州智能外呼系統(tǒng)收費 電銷機器人怎么收費 忻州外呼系統(tǒng)接口對接 語音平臺系統(tǒng) 地圖標注和圖片標注
昨天同事問了我一個問題,有兩個循環(huán)語句:
復(fù)制代碼 代碼如下:

for(i = n; i > 0; i--)
{

}

for(i = 0; i n; i++)
{

}

為什么前者比后者快?
我當時的解釋是:
i- -操作本身會影響CPSR(當前程序狀態(tài)寄存器),CPSR常見的標志有N(結(jié)果為負), Z(結(jié)果為0),C(有進位),O(有溢出)。i > 0,可以直接通過Z標志判斷出來。
i++操作也會影響CPSR(當前程序狀態(tài)寄存器),但只影響O(有溢出)標志,這對于i n的判斷沒有任何幫助。所以還需要一條額外的比較指令,也就是說每個循環(huán)要多執(zhí)行一條指令。
(這是五年前tjww告訴我的,當時他在AVR上寫一個LCD驅(qū)動程序,使用后者LCD會閃爍,使用前者則沒有問題。)
為了確認我的理解是正確的,做了個實驗:
復(fù)制代碼 代碼如下:

int loop_dec(int n)
{
int i = 0;
int v = 0;

for(i = n; i > 0; i--)
v +=i;

return v;
}

int loop_inc(int n)
{
int i = 0;
int v = 0;

for(i = 0; i n; i++)
v +=i;

return v;
}

用arm-linux-gcc編譯,然后反匯編:
i--的循環(huán)條件:
4c: e51b3014 ldr r3, [fp, #-20]
50: e3530000 cmp r3, #0 ; 0x0
54: cafffff5 bgt 30 loop_dec+0x30>

i++的循環(huán)條件:
b8: e51b3018 ldr r3, [fp, #-24]
bc: e1520003 cmp r2, r3
c0: bafffff4 blt 98 loop_inc+0x30>結(jié)果和我想象的并不一樣,這是怎么回事呢?我想可能因為沒有加優(yōu)化選項,于是加上-O選項,結(jié)果變?yōu)椋?
i--的循環(huán)條件:
14: e2500001 subs r0, r0, #1 ; 0x1
18: 1afffffc bne 10 loop_dec+0x10>

i++的循環(huán)條件:
3c: e2833001 add r3, r3, #1 ; 0x1
40: e1500003 cmp r0, r3
44: 1afffffb bne 38 loop_inc+0x14>這下沒錯了,果然少一個cmp指令。
文章出處:http://www.limodev.cn/blog
您可能感興趣的文章:
  • PHP 函數(shù)執(zhí)行效率的小比較
  • 提高ASP頁面執(zhí)行效率的方法分析
  • 優(yōu)化innerHTML操作(提高代碼執(zhí)行效率)
  • 根據(jù)mysql慢日志監(jiān)控SQL語句執(zhí)行效率
  • JavaScript執(zhí)行效率與性能提升方案
  • 查詢mysql中執(zhí)行效率低的sql語句的方法
  • Oracle提高sql執(zhí)行效率的心得建議
  • 分享50個提高PHP執(zhí)行效率的技巧

標簽:防城港 宜賓 巴彥淖爾 日照 定州 山南 內(nèi)蒙古 96

巨人網(wǎng)絡(luò)通訊聲明:本文標題《i++循環(huán)與i-–循環(huán)的執(zhí)行效率(遞增與遞減效率)》,本文關(guān)鍵詞  i++,循環(huán),與,的,執(zhí)行,效率,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《i++循環(huán)與i-–循環(huán)的執(zhí)行效率(遞增與遞減效率)》相關(guān)的同類信息!
  • 本頁收集關(guān)于i++循環(huán)與i-–循環(huán)的執(zhí)行效率(遞增與遞減效率)的相關(guān)信息資訊供網(wǎng)民參考!
  • 企业400电话

    智能AI客服机器人
    15000

    在线订购

    合计11份范本:公司章程+合伙协议+出资协议+合作协议+股权转让协议+增资扩股协议+股权激励+股东会决议+董事会决议

    推薦文章