考慮下面的代碼片段:哪個更快:i = i + 2或i + = 2?
for(i=0;i<10;i+=2) // 1
for(i=0;i<2;i=i+2) // 2
哪一個會更好用?
它在性能上有什麼不同嗎?
考慮下面的代碼片段:哪個更快:i = i + 2或i + = 2?
for(i=0;i<10;i+=2) // 1
for(i=0;i<2;i=i+2) // 2
哪一個會更好用?
它在性能上有什麼不同嗎?
你的問題沒有確定的答案。這取決於您的編譯器在其他方面(優化級別,......)和目標平臺上的智能程度。這不是C語言問題。這種語言本身並不多或少表現。它只取決於編譯器從中建立什麼。因此,如果性能事關重大,請對其進行測試......
否則,我的建議是,以您感覺它更具可讀性的方式編寫它。
第一個選項至少與第二個選項一樣快。 儘管任何編譯優化都會生成相同的彙編代碼。
下了0.0260015秒
for (i = 0 ; i < 10000000 ; i += 2)
這把0.0170010
for (i = 0 ; i < 10000000 ; i = i + 2)
@MasterID雖然是正確的,當我啓用 '優化代碼' 都報道0.0150009秒
兩種表達完全相同的語義,即在C語言的抽象機器中完全相同的效果。如果一個比另一個慢,這是編譯器中的一個質量缺陷。
你試過計時嗎?你發現了什麼? – Levon 2012-08-11 15:33:58
第二個會更快,因爲綁定是不同的。 – 2012-08-11 15:34:44
@JensGustedt你能否更詳細地解釋一下?你的意思是2對10? – Gir 2012-08-11 15:35:26