32位应用程序在64位操作系统上运行会更快还是更慢?

16

我大部分时间都在32位嵌入式系统上工作,通常使用本地的32位类型(int、float)比16位等价物更快。慢的原因是处理器在对其进行操作之前将任何16位数字扩展到32位。

现在我转移到了PC和64位操作系统。我的问题是:32位类型会在64位机器上造成任何减速吗?

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

我知道性能受应用程序的许多因素影响,故本问题有意排除这些因素(IO速度、更快的内存等)。


1
你包括了哪些因素? - Greg Hewgill
我正在思考32位和64位操作的CPU执行。但是Nate C-K提到了当你有更多代码时的RAM访问时间,这是一个很好的观点。 - Chris Masterton
1个回答

11
有时候32位应用程序运行得更快,有时候运行得更慢。影响性能的因素很多,竞争也很激烈。一般来说,差异不会很大。
我不明白如何合理地排除任何性能考虑因素,因为性能总是发生在现实世界中,所有因素都在起作用。速度不是理论上的,不能孤立地处理。
这里有一篇文章,作者进行了一些基准测试:

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

他在测试中发现32位二进制文件速度更快。这是在2004年初SPARC上的情况。
这是英特尔关于转向64位应用程序的一篇2010年文章:

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

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

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