簡體   English   中英

在C中合並邏輯運算符

[英]Combine logical operators in C

我想知道結合邏輯運算符的成本是多少? 結合它們的最佳方法是什么?

例如:就優化而言,以下兩個語句有何區別?

1) if((!x || !y || !z) && (a != b)) 
2) if(!( x && y && z) && (a != b))

我從同齡人那里聽說,您應該比ORing操作更多地使用ANDing操作。 我是C語言的新手。 請有人幫助我理解這一點。 任何材料或鏈接也將有所幫助。

它們都是相同的,不應影響性能。 根據德摩根定律,它們彼此等效。

除非此代碼在您的代碼中處於非常熱的路徑中,否則請始終選擇對將來的讀者而言最合乎邏輯的形式。

如果在炎熱的路徑,編譯都看看組裝。 讓我們看到許多編譯器和CPU輸出的一個好工具是Godbolt

這是測試您的方案的示例: 小提琴

如您所見,指令的數量是相同的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM