我注意到在C和C ++中,我们可以使用int64_t
,或只使用long long
。
如果我使用这些类型编译 32位代码,我是否会在 64位和/或 32位计算机上遇到任何性能问题?
除了保存一些内存外,我是否有理由只使用int
?
毕竟,64位整数在存储大数字时更有用。
答案 0 :(得分:9)
如果我使用这些类型编译32位代码,我会在64位和/或32位机器上遇到任何性能问题吗?
您的编译器可能需要生成多个机器代码指令才能对64位值执行操作,从而将这些操作减慢几次。如果这可能是一个问题,您需要进行一些基准测试,以评估使用实际数据对特定程序的影响。这个问题存在于32位或64位计算机上执行32位可执行文件的地方。
我是否有理由只使用
int
?
除了性能和内存使用情况之外,偶尔有理由使用int
,因为您使用的其他API /流等使用int
。如果显而易见,使用int
时也会有微妙的文件价值,否则其他程序员可能会浪费时间,想知道为什么你不想使用long long
。
毕竟,64位整数在存储大数字时更有用。
在存储非常大数字方面更有用 - 当然 - 但这是相对很少需要的。如果你存储了一年或某个年龄的东西,那么64位就没有特别的意义了。
答案 1 :(得分:6)
如果我使用这些类型编译32位代码,我会在64位和/或32位机器上遇到任何性能问题吗?
32位架构上的64位整数需要两个寄存器来存储值*。 32位值只需要一个寄存器。这很重要,因为:
最重要的是,如果32位性能很重要,除非你需要,否则不要使用64位整数。
* x86,ARM和PowerPC处理器都是如此,它涵盖了目前人们编程的大多数处理器。大多数其他处理器也可能是这样。