濮阳杆衣贸易有限公司

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

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

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

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

}

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

}

為什么前者比后者快?
我當(dāng)時(shí)的解釋是:
i- -操作本身會(huì)影響CPSR(當(dāng)前程序狀態(tài)寄存器),CPSR常見的標(biāo)志有N(結(jié)果為負(fù)), Z(結(jié)果為0),C(有進(jìn)位),O(有溢出)。i > 0,可以直接通過Z標(biāo)志判斷出來。
i++操作也會(huì)影響CPSR(當(dāng)前程序狀態(tài)寄存器),但只影響O(有溢出)標(biāo)志,這對于i n的判斷沒有任何幫助。所以還需要一條額外的比較指令,也就是說每個(gè)循環(huán)要多執(zhí)行一條指令。
(這是五年前tjww告訴我的,當(dāng)時(shí)他在AVR上寫一個(gè)LCD驅(qū)動(dòng)程序,使用后者LCD會(huì)閃爍,使用前者則沒有問題。)
為了確認(rèn)我的理解是正確的,做了個(gè)實(shí)驗(yàn):
復(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àn)闆]有加優(yōu)化選項(xiàng),于是加上-O選項(xiàng),結(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>這下沒錯(cuò)了,果然少一個(gè)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個(gè)提高PHP執(zhí)行效率的技巧

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

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《i++循環(huán)與i-–循環(huán)的執(zhí)行效率(遞增與遞減效率)》,本文關(guān)鍵詞  i++,循環(huán),與,的,執(zhí)行,效率,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(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)民參考!
  • 推薦文章
    冕宁县| 资中县| 德江县| 刚察县| 手机| 大石桥市| 肇庆市| 佛教| 东乡族自治县| 常州市| 平定县| 中宁县| 广元市| 海丰县| 新巴尔虎右旗| 河间市| 罗定市| 岢岚县| 天门市| 乌苏市| 沙坪坝区| 桦甸市| 剑阁县| 太保市| 额济纳旗| 泸溪县| 固原市| 中西区| 平罗县| 施甸县| 台东市| 霍林郭勒市| 宁城县| 九龙城区| 梧州市| 恩施市| 乌拉特后旗| 临泽县| 彰化县| 郸城县| 综艺|