假設有一個環,其中有需要被重置爲0每次迭代名爲counter
的整數變量的情況。這兩個版本中的哪一個會更有效率?效率的在最簡單的循環
版-1:
for (int i = 0; i < 10; i++) {
int counter = 0;
if (something()) counter++;
}
版-2:
int counter;
for (int i = 0; i < 10; i++) {
counter = 0;
if (something()) counter++;
}
在第一版本中,計數器變量的範圍內的for循環,它的在重新配置的每次迭代的內存。在第二種情況下,它只是覆蓋整個程序中的單個內存位置。我認爲第二個版本效率更高,但是效率可以忽略不計或相當大,還是相反?
編譯/ JIT可能會變成#2#1反正 – arynaq 2015-03-08 22:10:35
對於哪種語言?在什麼操作系統上?什麼平臺和版本?總之,答案*可以忽略不計*,並提防過早優化。 – 2015-03-08 22:10:37
我希望你不會找到任何差別 - 現代編譯器會找出你是如何在這兩種情況下使用'counter'併產生相同的代碼。 – 2015-03-08 22:11:08