【发布时间】:2011-06-16 16:37:11
【问题描述】:
据说可以在 x86 模式下编译 .NET 应用程序,因为 x64 提供的唯一好处是更大的虚拟地址空间,因此允许应用程序分配超过 2(或 3)GB内存,或者内存映射非常大的文件。
但是,一个非常简单的测试表明,在 64 位计算机上,SHA256Managed 对 10 MB 字节数组的哈希处理速度几乎是 x86 应用程序的两倍。因此,任何执行大量 SHA256 散列的应用程序都可以从“任何 CPU”或为两个平台单独构建中获得相当大的好处。
我的问题是:这是 .NET 的典型结果吗?在 64 位操作系统上以 64 位模式运行其他计算量大的任务是否同样受益?当然,我可以只测试每一个特定的计算,但我会欣赏一个整体的“经验法则”,例如:
- 是的,任何进行大量整数运算的东西都会快得多
- 是的,所有数值计算都快得多(包括双精度/小数)
- 不,这是一个罕见的例外,大多数算法在两种模式下的运行速度大致相同
【问题讨论】:
-
x64 多了 8 个 CPU 寄存器。非常适合 SHATransform(),有很多局部变量。很少见。
-
GZipStream 压缩在 x86 模式下慢了 20% - 没有那么明显,但很明显。
标签: .net performance 64-bit