找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2198|回復(fù): 9
打印 上一主題 下一主題
收起左側(cè)

C語言順序執(zhí)行與for循環(huán)執(zhí)行哪個(gè)更快?

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:997026 發(fā)表于 2023-9-21 22:21 | 只看該作者 回帖獎勵 |倒序?yàn)g覽 |閱讀模式

想問下,代碼順序執(zhí)行,與for循環(huán)的方式執(zhí)行,哪個(gè)更快些?
舉例:

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

}
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:624769 發(fā)表于 2023-9-21 22:56 | 只看該作者
單純考慮執(zhí)行速度的話,
相同代碼 打 4遍  肯定 比循環(huán) 4次 要快的多。
甚至,不要寫子函數(shù), 直接在 主程序里 輸入代碼 一定是最快的。
回復(fù)

使用道具 舉報(bào)

板凳
ID:1093026 發(fā)表于 2023-9-21 23:58 | 只看該作者
以ARM精簡指令集為例,執(zhí)行速度取決于相同功能,編譯后產(chǎn)生的匯編指令有多少條。如果順序執(zhí)行和for循環(huán)展開的代碼邏輯一樣,那么,執(zhí)行效率應(yīng)該是相當(dāng)?shù)摹?br /> 個(gè)人覺得,考慮執(zhí)行效率更應(yīng)該是for循環(huán)嵌套的場景,此時(shí),遍歷次數(shù)多的應(yīng)該放在內(nèi)層循環(huán),這樣執(zhí)行效率會高一些。另外,switch case語句和if else語句的執(zhí)行效率也是經(jīng)常討論的場景,單層情況下效率相當(dāng),嵌套場景switch case語句效率高。
回復(fù)

使用道具 舉報(bào)

地板
ID:883242 發(fā)表于 2023-9-22 00:54 | 只看該作者
不優(yōu)化的時(shí)候,當(dāng)然是順序執(zhí)行快,但是for循環(huán)省空間,以空間換時(shí)間。

把優(yōu)化等級開到最高,很大可能一樣快,取決于你的優(yōu)化方向,如果是size順序執(zhí)行很可能跟for循環(huán)一樣小,如果是speed那么for很可能跟順序一樣快。
回復(fù)

使用道具 舉報(bào)

5#
ID:517951 發(fā)表于 2023-9-23 07:21 | 只看該作者
順序執(zhí)行少了條件判斷,要快. 但實(shí)際上條件判斷執(zhí)行時(shí)間才幾u(yù)s時(shí)間. 根本覺察不出來. 還不如用for循環(huán)來做.
回復(fù)

使用道具 舉報(bào)

6#
ID:883242 發(fā)表于 2023-9-23 10:50 | 只看該作者
仔細(xì)看了下,原來get_score_flag1不是函數(shù)而是變量!

Keil C51比較特殊會假定用戶都是不懂volatile這個(gè)關(guān)鍵字的制杖,但是對于其他標(biāo)準(zhǔn)一些的c編譯器來說,只要get_score_flag1沒有volatile屬性,優(yōu)化等級開到足夠高,不管你是寫4遍還是for4遍,結(jié)果只能有g(shù)et_score_flag1=1;這一句話,一樣快。
回復(fù)

使用道具 舉報(bào)

7#
ID:1059013 發(fā)表于 2023-9-23 12:30 | 只看該作者
一般看編譯后匯編代碼的行數(shù),行數(shù)少更快,早期單片機(jī)速度慢需要考量代碼量,現(xiàn)在單片機(jī)非常快不用考慮代碼量,影響速度的主要是AD轉(zhuǎn)換以及其他的等待時(shí)間。
回復(fù)

使用道具 舉報(bào)

8#
ID:1088185 發(fā)表于 2023-9-24 07:18 | 只看該作者
hero_71 發(fā)表于 2023-9-21 23:58
以ARM精簡指令集為例,執(zhí)行速度取決于相同功能,編譯后產(chǎn)生的匯編指令有多少條。如果順序執(zhí)行和for循環(huán)展開 ...

你確定驗(yàn)證過你所說的?
回復(fù)

使用道具 舉報(bào)

9#
ID:1088185 發(fā)表于 2023-9-24 07:22 | 只看該作者
就速度而言,不管51還是ARM, 順序都是最快, 樓上說一樣還甚至說for循環(huán)更快的, 最后先驗(yàn)證再來說。
回復(fù)

使用道具 舉報(bào)

10#
ID:584195 發(fā)表于 2023-9-24 21:54 | 只看該作者
順序執(zhí)行要快一些,你看看匯編代碼就知道了。
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表