32位和64位MS Windows上的Int64和Int32之间的实际性能差异是什么?

7

在32位和64位的MS Windows上,Int64和Int32之间的实际性能差异是什么?

同时,看到Int64与Int32在这两个操作系统变体上的实际时间也会很棒。XP或Vista也很有趣。

  • 另请参阅有关memcpy性能的问题。
4个回答

9

就硬件而言,在x64和IA64上,Int64的效率比x86更高,因为64位处理器具有64位寄存器来执行操作。

在所有x86、x64和IA64上,Int32的效率都是相同的。

在x64和IA64上,Int32和Int64的效率是相同的。

在x86上,Int32的效率比Int64更高。

至于操作系统本身,我认为您不会看到任何额外的性能问题,而仅有上述提到的性能结果。


请注意,在所有平台上使用32位整数的优势非常小,因为您只需要移动4个字节而不是8个字节。但这实际上相当微小,而且在大多数情况下不太可能产生任何明显的性能差异。 - Zathrus
4
我认为在x64上移动8个字节并不比移动4个字节更慢,因为它们同时被同时移动。 - Brian R. Bondy
如果你在一个8字节的架构上移动4个字节,你需要清除掉剩下的4个字节。 - Burkhard
再次强调,你是在硬件层面同时写入所有字节,所以这并不重要。 - Brian R. Bondy
在 64 位机器上移动 32 位数据,如果需要在活动段中进行大小覆盖,有时实际上可能比移动 64 位数据更慢。 - Brian Knoblauch
我同意最后一个观点,但我猜想大多数都同样有效率。 - Brian R. Bondy

4

当你不确定时,选择int32。它不仅在x86架构上更快,而且许多这样的架构仍然存在,但请记住你的缓存是有限的,你可以将两倍的int32放入CPU缓存中,而不是int64。


-1

从硬件角度来看,也就是如果操作系统充分利用了架构,Int64 在 64 位系统上会更有效率。

在 32 位系统上,Int32 可能会稍微更有效率,因为 64 位系统可能需要模拟 32 位操作。


所有这些都是错误的。操作系统不是机器码的解释器。int64更大,不易缓存,在乘法方面速度较慢,但AND、OR、XOR、COMP、NOT等操作的速度相同,并且在64位内存模型上的相对内存寻址是通过8位和64位寄存器完成的,而不是32位寄存器。amd64向后兼容x86 - 没有仿真。 - comonad

-1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接