久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2197|回復: 9
打印 上一主題 下一主題
收起左側

C語言語句問題 if(x<=y) 和if(x<y||x==y) 一樣嗎 執行效率誰快

[復制鏈接]
跳轉到指定樓層
樓主
ID:709761 發表于 2022-9-8 17:01 | 只看該作者 回帖獎勵 |正序瀏覽 |閱讀模式
if(x<=y)  和if(x<y||x==y) 一樣嗎 執行效率誰快
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

10#
ID:883242 發表于 2022-9-11 03:42 | 只看該作者
一事無成 發表于 2022-9-8 21:35
現在優化后應該是一樣的,不過編譯器不一樣結果也可能不一樣,要看匯編代碼

然而我用RVMDK自帶的v5、v6兩種編譯器,以及IAR EWARM 8.22一共三種編譯器,測試了所有的優化等級,其輸出的ARM匯編代碼均與沙發的51代碼類似, if(x<=y) 只做了做了一次比較,而if(x<y||x==y)忠實的做了兩次比較。

顯然編譯器認為 if(x<=y) 和if(x<y||x==y) 是兩種完全不同的邏輯,不能在優化中合并第二種,具體的邏輯思路我也是百撕不得騎姐,大家可以暢所欲言的討論下。
回復

使用道具 舉報

9#
ID:434018 發表于 2022-9-10 20:30 | 只看該作者
if(x<=y)快,看編譯匯編代碼
回復

使用道具 舉報

8#
ID:624769 發表于 2022-9-10 14:10 來自觸屏版 | 只看該作者
xianfajushi 發表于 2022-9-10 10:05
基本一樣,不要看匯編語句多寡比較,要實際循環計數時間比較才得出結論,比如a>b只執行一次而a>=b則執行2次 ...

a>b,就是b-a 是否借位,借位為真,不借位為假。
a>=b,就是a-b 是否借位,不借位為真,借位為假。兩者都是一次減法運算,和一次借位標志判斷。本質上是一樣的執行量,看編譯器的“聰明”程度了。
回復

使用道具 舉報

7#
ID:332444 發表于 2022-9-10 10:05 | 只看該作者
基本一樣,不要看匯編語句多寡比較,要實際循環計數時間比較才得出結論,比如a>b只執行一次而a>=b則執行2次,因此慎用有2次的運算符,有時>=或<=可以化為>或<的運算優化。
回復

使用道具 舉報

6#
ID:1007932 發表于 2022-9-8 21:35 | 只看該作者
現在優化后應該是一樣的,不過編譯器不一樣結果也可能不一樣,要看匯編代碼
回復

使用道具 舉報

5#
ID:999824 發表于 2022-9-8 19:33 | 只看該作者
if(x<=y)這個更快,更好,老手都這樣用
回復

使用道具 舉報

地板
ID:883242 發表于 2022-9-8 18:19 | 只看該作者

換個優化等級就不是這個結果了。
回復

使用道具 舉報

板凳
ID:451718 發表于 2022-9-8 17:37 | 只看該作者
C語言編譯的時候,會自己優化的。  執行效率,主要還是要看你的函數嵌套深度,以及for循環的使用頻率。
回復

使用道具 舉報

沙發
ID:688692 發表于 2022-9-8 17:28 | 只看該作者
     4: if(x<=y)
C:0x000F    E508     MOV      A,0x08
C:0x0011    D3       SETB     C
C:0x0012    9509     SUBB     A,0x09
C:0x0014    5003     JNC      C:0019
     5: {
     6:         z=1;
C:0x0016    750A01   MOV      0x0A,#0x01
     7: }        


     8: if(x<y||x==y)
C:0x0003    E508     MOV      A,0x08
C:0x0005    C3       CLR      C
C:0x0006    9509     SUBB     A,0x09
C:0x0008    4005     JC       C:000F
C:0x000A    E508     MOV      A,0x08
C:0x000C    B50903   CJNE     A,0x09,C:0012
     9: {
    10:         z=1;
C:0x000F    750A01   MOV      0x0A,#0x01
    11: }


顯然,if(x<=y) 這個寫法勝出。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美精品1区2区 | 免费不卡av | 久久国产麻豆 | 精品国产乱码久久久久久影片 | 亚洲精品一级 | 欧美一级片在线观看 | 久久6视频| 久久久亚洲综合 | 五月天天色 | 欧美在线精品一区 | 亚洲精品18| 亚洲综合久久网 | 91在线资源| 欧美精品久久久久 | 青青草一区二区三区 | 国产99视频精品免费播放照片 | 亚洲精品国产综合区久久久久久久 | 国产视频久 | 拍戏被cao翻了h承欢 | 99视频在线免费观看 | 亚洲视频欧美视频 | 欧美日韩一 | 免费看黄视频网站 | 韩日精品视频 | 激情欧美一区二区三区 | 久草精品视频 | 亚洲欧美精品久久 | 精久久久久 | 成人免费淫片aa视频免费 | 国产精品一区二区三区久久久 | 久久麻豆精品 | 国产精品久久久久久久久久久免费看 | 中文在线视频观看 | 精品久久久久久久久久久 | 成人精品一区二区 | 欧美自拍视频 | 91视视频在线观看入口直接观看 | 中文字幕在线免费视频 | 97av视频 | 成人精品免费视频 | 久久精品亚洲精品国产欧美 |