繁体   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