我主要研究32位嵌入式系统,使用本机32位类型(int,float)通常比16位等效系统更快。减速来自于处理器在执行操作之前将任何16位数扩展到32位。
现在我已经转移到了PC和64位操作系统。我的问题是 - 32位类型会导致64位机器的速度减慢吗?
例如,如果我将MyApp.exe构建为32位应用程序,它会在64位操作系统上运行得更慢还是更快?
我知道应用程序的性能涉及很多因素,我故意将这些因素排除在问题之外(IO速度,更快的内存等)。
答案 0 :(得分:10)
有时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(更频繁的缓存未命中)。