我想知道普通C++应用程序在以下情况下的相对性能:
此外,在修改/开发应用程序使其在64位处理器上运行得更快时,应该考虑哪些因素?
发布于 2009-10-15 07:13:17
简短的回答:你可能不会注意到有什么不同。
更长的答案:64位x86具有更多的通用寄存器,这使编译器有更多的机会将局部变量优化到寄存器中,以加快访问速度。编译器也可以采用更现代的特性,例如。不需要为386优化代码,并且可以假设您的CPU有类似SSE的东西,而不是用于浮点运算的旧的x87 FPU。但是指针的宽度是原来的两倍,这对缓存来说更糟。
发布于 2009-10-15 08:42:13
CPU密集型程序在64位上可能会明显地加快速度.处理器具有16,而不是8个可用的通用寄存器,它们也是宽度的两倍(64而不是32位)。
此外,SSE指令的寄存器数量翻了一番,从8个增加到16个,这有助于多媒体应用程序或其他做大量浮点计算的应用程序。
有关详细信息,请参阅维基百科的x86-64。
还有一点还没有提到,64位版本的操作系统(如Windows和Linux )在64位系统上使用不同的呼叫约定进行函数调用;参数不是在堆栈上传递参数,而是在寄存器中传递(更好),这在原则上更快。因此,软件将更快,因为有较少的功能调用开销。
发布于 2009-10-15 07:28:58
通常,您不会找到对64位操作的支持不同的等效处理器,因此很难对1)和2进行任何具体的比较。另一方面,32位和64位模式的构建之间的差异完全取决于应用程序。64位版本可能比32位版本稍慢或稍快.如果您的应用程序使用了大量临时变量,那么64位模式的增加寄存器集在性能上会产生很大的差异。
https://stackoverflow.com/questions/1570678
复制相似问题