當所有值都是布爾值時,二進制文件&
的運算次數多於邏輯&&
?哪一個更高效:二進制&或邏輯&&
例如
if (foo == "Yes" & 2 != 0 & 6)
或
if (foo == "Yes" && 2 != 0 && 6)
(思PHP明確,但任何語言都行)
當所有值都是布爾值時,二進制文件&
的運算次數多於邏輯&&
?哪一個更高效:二進制&或邏輯&&
例如
if (foo == "Yes" & 2 != 0 & 6)
或
if (foo == "Yes" && 2 != 0 && 6)
(思PHP明確,但任何語言都行)
它有多少位操作上是無關緊要的:處理器可以做到這一點無論如何(正常情況下)在一條指令中。最關鍵的區別是&&
的快捷鍵能力,因此對於右手邊的任何評估它的速度都不是很快 - 假設一種語言,&&
就像C或Java一樣工作。 (顯然是PHP,儘管我對此知之甚少)。
另一方面,這個快捷方式所需的分支也可能會減慢速度,但我確信現在的編譯器足夠智能以優化這一點。
這取決於您的代碼的邏輯。
這是更好地使用& &如果& &是合乎邏輯的,並使用&當&是合乎邏輯的,這就是爲什麼這些運營商都是。不要過早地優化,這是因爲:
您的應用程序的速度可能沒有優化
你可以優化應用程序的一部分,將贏得的速度增加無關量被罰款
您的代碼會更復雜,並且將很難在更高版本上工作
如果您遇到速度問題,它可能與該想法無關
編程是相當困難本身有時會和這種黑客攻擊會使你的代碼不可讀,你的隊友會不理解你的代碼和您的團隊的整體效率會因爲你
沒錯,儘管如果'&&'_was_以編譯器無法彌補的方式變慢,並且已經顯示一次發生是程序中的瓶頸,那麼可以用'&'替換它。當然有評論。 – leftaroundabout 2012-03-21 09:44:53
這取決於語言。對真的。 – SLaks 2012-03-20 19:40:45
@SLaks任何語言的答案都會有幫助。 – htoip 2012-03-20 19:45:58