2014-10-28 43 views
0

C中的運算符更快:運算符!=>? 我在問,因爲如果我們有大量的循環,我們必須使用上述條件之一(while(x!=-1)while(x>0))。循環中的操作員性能

那麼其他語言呢。

+1

當你嘗試它時,結果是什麼? – 2014-10-28 09:02:32

+0

@TimCastelijns我沒有嘗試過,但我沒有找到任何建設性的東西。 – 2014-10-28 09:03:48

+2

可能是因爲沒有考慮到特定的系統來討論程序速度是沒有意義的。 – Lundin 2014-10-28 09:14:55

回答

1

在大多數現代處理器上,它不會有任何區別。

這通常被編譯爲一個比較指令,該指令設置某些標誌,然後跳轉到某些標誌的組合上。關係運營商之間通常沒有時間差異。

有些優化可能會忽略分支跳轉,但是不可能知道哪個運算符會更高性能,如果有的話。它可能取決於上下文。

當然,如果您確實想知道,您必須進行一些測試運行和/或剖析代碼。

1

假設硬件,一個版本:(!x = - 1)

cmp %r1, -1 
jeq addr 

同樣假設硬件,版本二:(x> 0)

cmp %r1, 0 
jle addr 

,除非我們知道確切的harware,我們不能說,但通常期望他們是相同或相似的

無論哪種方式,我會建議最明確表達意圖的版本。

+0

確實,特別是從語義上來說,'!= -1'與'> 0'不一樣。 – 2014-10-28 09:12:02