【问题标题】:What are the actual performance differences between Int64 and Int32 on 32 and 64 bit MS Windows?Int64 和 Int32 在 32 位和 64 位 MS Windows 上的实际性能差异是什么?
【发布时间】:2010-09-21 20:21:57
【问题描述】:

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

如果能在两个操作系统变体中分别看到 Int64 与 Int32 的一些实际时间安排,那就太好了。 XP 或 Vista 也会很有趣。

  • 另请参阅有关memcpy 性能的问题。

【问题讨论】:

    标签: .net performance memory 64-bit 32-bit


    【解决方案1】:

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

    Int32 在所有 x86、x64 和 IA64 上同样有效。

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

    在 x86 上,Int32 比 Int64 更有效。

    就操作系统本身而言,我认为除了上述性能结果之外,您不会看到任何额外的性能问题。

    【讨论】:

    • 请注意,在所有平台上 32 位整数都有一个非常小的优势,因为您只需 MV 4 个字节而不是 8 个字节。但这确实很小,不太可能提供任何可辨别的性能大多数情况下的差异。
    • 我认为在 x64 上移动 8 个字节并不比移动 4 个字节慢。因为它同时移动它们。
    • 如果在 8 字节架构上移动 4 个字节,则需要将 4 个字节清零。
    • 再次,您在硬件级别同时写入所有字节,所以没关系。
    • 在 64 位计算机上移动 32 位可能如果在活动段中需要大小覆盖,则有时实际上比移动 64 位要慢。
    【解决方案2】:

    如有疑问,请使用 int32。它不仅在 x86 架构上速度更快,而且其中有很多是闲置的,而且请记住,您的缓存是有限的,您可以在 CPU 缓存中放入两倍于 int64 的 int32。

    【讨论】:

      【解决方案3】:

      您不妨关注 SpankyJ 以往关于 64 位开发的记录

      http://blogs.msdn.com/joshwil/archive/2005/04/28/413320.aspx

      【讨论】:

        【解决方案4】:

        从硬件的角度来看,即如果操作系统充分利用架构,Int64 将在 64 位系统上更高效。

        Int32 在 32 位系统上可能稍微高效一些,因为 64 位系统可能必须模拟 32 位操作。

        【讨论】:

        • 一切都错了。操作系统不是机器代码的解释器。 int64 更大,缓存能力较差,乘法速度较慢,但​​ AND、OR、XOR、COMP、NOT 等同样快,并且 64 位内存模型上的相对内存寻址是通过 8 位和 64 位寄存器完成的,而不是 32 位寄存器。 amd64 向后兼容 x86 - 无仿真。
        猜你喜欢
        • 1970-01-01
        • 2013-02-06
        • 2010-09-21
        • 2010-12-18
        • 1970-01-01
        • 2016-12-25
        • 1970-01-01
        • 2011-09-02
        • 1970-01-01
        相关资源
        最近更新 更多