2012-03-20 48 views
0

當所有值都是布爾值時,二進制文件&的運算次數多於邏輯&&哪一個更高效:二進制&或邏輯&&

例如

if (foo == "Yes" & 2 != 0 & 6) 

if (foo == "Yes" && 2 != 0 && 6) 

(思PHP明確,但任何語言都行)

+1

這取決於語言。對真的。 – SLaks 2012-03-20 19:40:45

+0

@SLaks任何語言的答案都會有幫助。 – htoip 2012-03-20 19:45:58

回答

4

它有多少位操作上是無關緊要的:處理器可以做到這一點無論如何(正常情況下)在一條指令中。最關鍵的區別是&&的快捷鍵能力,因此對於右手邊的任何評估它的速度都不是很快 - 假設一種語言,&&就像C或Java一樣工作。 (顯然是PHP,儘管我對此知之甚少)。

另一方面,這個快捷方式所需的分支也可能會減慢速度,但我確信現在的編譯器足夠智能以優化這一點。

0

這取決於您的代碼的邏輯。

0

這是更好地使用& &如果& &是合乎邏輯的,並使用&當&是合乎邏輯的,這就是爲什麼這些運營商都是。不要過早地優化,這是因爲:

  1. 您的應用程序的速度可能沒有優化

  2. 你可以優化應用程序的一部分,將贏得的速度增加無關量被罰款

  3. 您的代碼會更復雜,並且將很難在更高版本上工作

  4. 如果您遇到速度問題,它可能與該想法無關

  5. 編程是相當困難本身有時會和這種黑客攻擊會使你的代碼不可讀,你的隊友會不理解你的代碼和您的團隊的整體效率會因爲你

  6. 書面醜陋的代碼來減少
+0

沒錯,儘管如果'&&'_was_以編譯器無法彌補的方式變慢,並且已經顯示一次發生是程序中的瓶頸,那麼可以用'&'替換它。當然有評論。 – leftaroundabout 2012-03-21 09:44:53

相關問題