程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> for-關於循環這兩個代碼哪個效率更高?

for-關於循環這兩個代碼哪個效率更高?

編輯:編程綜合問答
關於循環這兩個代碼哪個效率更高?

代碼1:
i=0;
while(1)
{
for(i=0;i<25;i++)
{
a=1;
}
for(;i<50;i++)
{
a=0;
}
i=0;
}

代碼2:
i=0;
while(1)
{
i++;
switch(i)
{
case 1:
a=1;
break;
case 25:
a=0;
break;
case 50:
i=0;
break;
}
}

最佳回答:


回復chezunyin: 不好說,不同的處理器執行不同的指令花費的時間不同,這是其一,其二,遇到for循環,編譯器會翻譯成一個條件判斷和一個跳轉,switch也是如此。
現代處理器用硬件預測這個if是否成立,並且先行執行後續指令。如果if執行出來和預測的不同,然後再走另一個分支。
因此對於現代處理器來說,很難通過靜態代碼評判它的效率。
通常我們可以反匯編編譯器產生的代碼,根據產生的指令條數大概估測,這個你可以自己去看。

總之,你在學校學習的是那種沒有緩存機制,也沒有超標量多發射,更沒有分支預測的8086,它完全和你用的處理器不是一碼事了。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved