16

我主要在 32 位嵌入式系统上工作,使用本机 32 位类型(int、float)通常比 16 位等价物更快。减速来自处理器在对其执行操作之前将任何 16 位数字扩展到 32 位。

现在我已经转向 PC 和 64 位操作系统。我的问题是 - 32 位类型会导致 64 位机器减速吗?

例如,如果我将 MyApp.exe 构建为 32 位应用程序,它会在 64 位操作系统上运行得更慢还是更快?

我了解应用程序的性能涉及许多因素,我故意将这些因素排除在问题之外(IO 速度、更快的内存等)。

4

1 回答 1

11

有时 32 位应用程序运行得更快,有时它们运行得更慢。有很多竞争因素会影响性能。一般来说,两个方向的差异都不是很大。

我看不出如何合理地从性能考虑中排除任何因素,因为性能总是发生在所有因素都在起作用的现实世界中。速度不是理论上的,不能孤立地对待。

这是一篇文章,作者做了一些基准测试:

http://www.osnews.com/story/5768

他发现 32 位二进制文​​件在他的测试中速度更快。那是在 2004 年初的 SPARC 上。

这是英特尔 2010 年关于迁移到 64 位应用程序的文章:

http://software.intel.com/en-us/articles/moving-from-32-bit-applications-to-64-bit-applications-en/

根据这篇文章,64 位二进制文​​件可以为您提供更快的数学运算,因此如果正确优化,数学繁重的代码应该会更快。否则,您的 64 位代码可能会更慢,特别是因为它需要更多内存,这可能会导致访问 RAM 花费更多时间(更频繁的缓存未命中)。

于 2012-09-01T04:42:38.923 回答