壓倒性的建議似乎是在C中更喜歡int
s,除非空間很重要(http://c-faq.com/decl/inttypes.html)。傾向於儘可能短的類型
傾向於使用最短的類型可能會更有意義嗎?
較短的類型在大集合中具有明顯的優勢 - 集合在縮短類型時佔用的空間較小。
在數值函數,int
s與它應該是CPU與他們的工作速度更快的優勢,但不是那麼優化的工作在int
交換,當我在堆棧上聲明short
然後我繼續計算?我試過編譯幾個數值函數,一次用短褲,然後用整數,然後在-O3處得到相同的輸出組件(短褲是2字節,整數是我的架構上的4),所以它看起來似乎整體建議不再有效,特別是考慮到節省空間的潛力,考慮到CPU /內存性能差距擴大,這應該比以往更重要。 (我認爲在數字和大型集合中使用數據結構是相當普遍的)。
有沒有什麼原因讓我不應該傾向於默認最短的類型?
該程序集不能完全相同:如果沒有別的,則需要將數據轉換爲另一種類型。 –
@ScottHunter我試過類似'$ t compute _ $ {t}($ t a,$ t b) { $ t sum = 0; ($ t i; i <30; i ++){ sum + = a + 2 * b; } return sum; } '和它得到了降低到'LEA爲0x1(%RSI),%eax中 IMUL%EAX,EDI% IMUL $ 0X1E,EDI%,%EAX retq '在這兩種情況下。我想如果一切都發生在寄存器中,那麼不需要轉換。 – PSkocik