欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2874|回復: 9
收起左側

C語言順序執行與for循環執行哪個更快?

[復制鏈接]
ID:997026 發表于 2023-9-21 22:21 | 顯示全部樓層 |閱讀模式

想問下,代碼順序執行,與for循環的方式執行,哪個更快些?
舉例:

void  check_score()
{
      get_score_flag1=1;
      get_score_flag1=1;
get_score_flag1=1;
get_score_flag1=1;

}
回復

使用道具 舉報

ID:624769 發表于 2023-9-21 22:56 | 顯示全部樓層
單純考慮執行速度的話,
相同代碼 打 4遍  肯定 比循環 4次 要快的多。
甚至,不要寫子函數, 直接在 主程序里 輸入代碼 一定是最快的。
回復

使用道具 舉報

ID:1093026 發表于 2023-9-21 23:58 | 顯示全部樓層
以ARM精簡指令集為例,執行速度取決于相同功能,編譯后產生的匯編指令有多少條。如果順序執行和for循環展開的代碼邏輯一樣,那么,執行效率應該是相當的。
個人覺得,考慮執行效率更應該是for循環嵌套的場景,此時,遍歷次數多的應該放在內層循環,這樣執行效率會高一些。另外,switch case語句和if else語句的執行效率也是經常討論的場景,單層情況下效率相當,嵌套場景switch case語句效率高。
回復

使用道具 舉報

ID:883242 發表于 2023-9-22 00:54 | 顯示全部樓層
不優化的時候,當然是順序執行快,但是for循環省空間,以空間換時間。

把優化等級開到最高,很大可能一樣快,取決于你的優化方向,如果是size順序執行很可能跟for循環一樣小,如果是speed那么for很可能跟順序一樣快。
回復

使用道具 舉報

ID:517951 發表于 2023-9-23 07:21 | 顯示全部樓層
順序執行少了條件判斷,要快. 但實際上條件判斷執行時間才幾us時間. 根本覺察不出來. 還不如用for循環來做.
回復

使用道具 舉報

ID:883242 發表于 2023-9-23 10:50 | 顯示全部樓層
仔細看了下,原來get_score_flag1不是函數而是變量啊!

Keil C51比較特殊會假定用戶都是不懂volatile這個關鍵字的制杖,但是對于其他標準一些的c編譯器來說,只要get_score_flag1沒有volatile屬性,優化等級開到足夠高,不管你是寫4遍還是for4遍,結果只能有get_score_flag1=1;這一句話,一樣快。
回復

使用道具 舉報

ID:1059013 發表于 2023-9-23 12:30 | 顯示全部樓層
一般看編譯后匯編代碼的行數,行數少更快,早期單片機速度慢需要考量代碼量,現在單片機非常快不用考慮代碼量,影響速度的主要是AD轉換以及其他的等待時間。
回復

使用道具 舉報

ID:1088185 發表于 2023-9-24 07:18 | 顯示全部樓層
hero_71 發表于 2023-9-21 23:58
以ARM精簡指令集為例,執行速度取決于相同功能,編譯后產生的匯編指令有多少條。如果順序執行和for循環展開 ...

你確定驗證過你所說的?
回復

使用道具 舉報

ID:1088185 發表于 2023-9-24 07:22 | 顯示全部樓層
就速度而言,不管51還是ARM, 順序都是最快, 樓上說一樣還甚至說for循環更快的, 最后先驗證再來說。
回復

使用道具 舉報

ID:584195 發表于 2023-9-24 21:54 | 顯示全部樓層
順序執行要快一些,你看看匯編代碼就知道了。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表