我最近被告知要提高一個for循環是方便使用遞減的循環,而不是增量環,像增量和減量的循環優化
For(int i=0; i<Limit;i++)
{
//code
}
For(int i=Limit-1; i >=0; i--)
{
//code
}
我沒有看到爲什麼有些人會推薦使用此,他們的論據是
「使用增量的for循環增加循環內部驗證的數量遞減採用循環驗證和處理時間減少」
我最近被告知要提高一個for循環是方便使用遞減的循環,而不是增量環,像增量和減量的循環優化
For(int i=0; i<Limit;i++)
{
//code
}
For(int i=Limit-1; i >=0; i--)
{
//code
}
我沒有看到爲什麼有些人會推薦使用此,他們的論據是
「使用增量的for循環增加循環內部驗證的數量遞減採用循環驗證和處理時間減少」
很多時候,你會看到這樣的事情:
for(int i = 0; i < list.length(); i++) {
}
但往往你可以做,而不是
for(int i = list.length(); i >= 0; i--) {
}
這樣,list.length()
被調用一次。
當然,這也成爲了可能:
int length = list.length();
for(int i = 0; i < length; i++) {
}
但第一種方式是短。
很少有人想過用這樣一個微不足道的(通常)不重要的修復來解決真正的性能問題。如果由於某種原因.length()
確實在吃CPU時間,我更喜歡最後一種方式。
那麼有一個指令「分支如果等於0」,但老實說這是可怕的建議,如果你從這個開關有明顯的性能差異,我會驚呆了。 – jozefg
+1 to @jozefg,尤其要記住,你真的應該使用迭代器來代替... – sashkello