我大部分时间都在32位嵌入式系统上工作,通常使用本地的32位类型(int、float)比16位等价物更快。慢的原因是处理器在对其进行操作之前将任何16位数字扩展到32位。
现在我转移到了PC和64位操作系统。我的问题是:32位类型会在64位机器上造成任何减速吗?
例如,如果我将MyApp.exe构建为32位应用程序,它是否会在64位OS上运行得更慢还是更快?
我知道性能受应用程序的许多因素影响,故本问题有意排除这些因素(IO速度、更快的内存等)。
我大部分时间都在32位嵌入式系统上工作,通常使用本地的32位类型(int、float)比16位等价物更快。慢的原因是处理器在对其进行操作之前将任何16位数字扩展到32位。
现在我转移到了PC和64位操作系统。我的问题是:32位类型会在64位机器上造成任何减速吗?
例如,如果我将MyApp.exe构建为32位应用程序,它是否会在64位OS上运行得更慢还是更快?
我知道性能受应用程序的许多因素影响,故本问题有意排除这些因素(IO速度、更快的内存等)。
http://www.osnews.com/story/5768
他在测试中发现32位二进制文件速度更快。这是在2004年初SPARC上的情况。http://software.intel.com/en-us/articles/moving-from-32-bit-applications-to-64-bit-applications-en/
根据这篇文章,64位二进制代码可以提供更快的数学运算速度,因此,如果正确优化,数学密集型代码应该会更快。否则,您的64位代码可能会更慢,特别是因为它需要更多的内存,这可能导致更多时间用于访问RAM(更频繁的高速缓存未命中)。