簡體   English   中英

在32位應用程序中使用64位整數是否可以?

[英]Is it ok to use 64bit integers in a 32bit application?

我注意到在C和C ++中,我們可以使用int64_t ,或者只是long long

如果我使用這些類型編譯32位代碼 ,我會在64位和/或32位機器上遇到任何性能問題嗎?

除了節省一些RAM,我還有理由只使用int嗎?
畢竟,64位整數在存儲大數字時更有用。

如果我使用這些類型編譯32位代碼,我會在64位和/或32位機器上遇到任何性能問題嗎?

您的編譯器可能需要生成多個機器代碼指令以對64位值執行操作,從而將這些操作減慢幾次。 如果這可能是一個問題,您需要進行一些基准測試,以評估使用實際數據對特定程序的影響。 存在於32或64位計算機上執行32位可執行文件的問題。

我有理由只使用int嗎?

除了性能和內存使用之外,偶爾也有理由使用int因為您使用的其他API /流等使用int 如果明顯足夠的話,使用int也會有微妙的文件價值,否則其他程序員可能會浪費時間,想知道為什么你不想long long使用它。

畢竟,64位整數在存儲大數字時更有用。

存儲非常大的數字更有用 - 當然 - 但這是相對很少需要的。 如果你存儲的東西像一年或某個人的年齡,那么64位就沒有特別的意義了。

如果我使用這些類型編譯32位代碼,我會在64位和/或32位機器上遇到任何性能問題嗎?

32位架構上的64位整數需要兩個寄存器來存儲值*。 32位值只需要一個寄存器。 這很重要,因為:

  • 您可能會很快耗盡寄存器,要求寄存器溢出到內存中。 這需要更多時間。
  • 加載和存儲2個寄存器通常需要兩個指令,而不是一個。
  • 在兩個寄存器中對操作數進行加法或減法需要兩個或多個指令,而只需一個寄存器中的操作數。

最重要的是,如果32位性能很重要,除非你需要它們,否則不要使用64位整數

*適用於x86,ARM和PowerPC處理器,這些處理器涵蓋了目前人們編程的大多數處理器。 大多數其他處理器也可能是這樣。

暫無
暫無

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

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