while(x < 100) {
if(x == 1) { echo "Hello World!" } else { echo "Bottles" }
x++;
}
乙
while(x < 100) {
if(x != 1) { echo "Bottles" } else { echo "Hello World!"}
x++;
}
難道真的有這麼大的循環時,有所作爲?
while(x < 100) {
if(x == 1) { echo "Hello World!" } else { echo "Bottles" }
x++;
}
乙
while(x < 100) {
if(x != 1) { echo "Bottles" } else { echo "Hello World!"}
x++;
}
難道真的有這麼大的循環時,有所作爲?
它可能不會有所作爲。
我會去的第二個,因爲它往往是x != 1
比這將是x == 1
這可能轉化爲超微型-1千分之一對的一毫秒的性能提升,但微觀優化並不重要。
爲了便於閱讀,我實際上會選擇第一個。如果你有很多這樣的情況,使用負面條件可能會引起混淆。 – 2010-02-07 06:31:29
你不可能注意到任何區別,幾乎肯定會有更大的瓶頸擔心。
對於典型的CPU,B可能會更快,因爲分支預測可能會混淆爲A.假設編譯器當然沒有優化。
順便說一句,你測量它,發現一個比另一個要好得多嗎?
除了這是PHP的CPU分支預測不是一個因素。 – 2010-02-07 06:39:35
這只是理論上的。除非我們測量它,否則永遠不可能知道哪個更快,甚至我們仍然無法確定。而且,很難預測分支預測器會做什麼,無論如何:-) – 2010-02-07 06:43:45
我假設x從1開始。如果不是這種情況,這不一定是可能的。
echo "Hello, World!";
while(x < 99) { echo "bottles"; x++; }
爲什麼要打擾條件,你知道你將不得不這樣做嗎?
您的代碼斷言x在開始處爲1。這個怎麼樣? while(x <1){echo「bottles」; X ++;如果(x ++ == 1)回顯「Hello,World!」;} if(x ++ == 1) (x <100){回聲「瓶子」; X ++; } – 2010-02-07 06:41:01
這取決於你的優化器如何處理你的循環。
我看不出有什麼區別,每個都會有100個循環和1個條件檢查! – Kubi 2010-02-07 06:30:00
我假設這是一個簡化的例子,因爲很清楚,如果這是真實的代碼,你應該將if移到循環之外。回聲「你好世界」,然後99瓶。 – 2010-02-07 06:41:05