我有一段代碼,是這樣的:非平凡轉到使用(可能擊敗編譯)
f += .001f; //Only needs to be executed when loop executes at least one iteration, but does no harm if incremented without entering the loop
while(anIndex < aVaryingBoundary) {
if(something) {
//code
continue;
}
//more code
}
我發現,使這個代碼更有效的唯一方式(通過消除的F不必要的增量)是使用goto。
if(anIndex < aVaryingBoundary) {
f += .001f;
loop:
if(something) {
//code
if(anIndex < aVaryingBoundary) {
goto loop;
}
else {
goto loop_end;
}
}
//more code
if(anIndex < aVaryingBoundary) {
goto loop;
}
}
loop_end:
即使這是一個簡單的優化,我不認爲編譯器可以很容易地檢測到這一點。編譯器執行真的不重要嗎?
爲什麼你使用'goto' - 這還帶走了方舟 –
取而代之的是''在裏面if'循環goto',爲什麼不增加? –
這是如何優化? – melpomene