首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在64位和32位的英特尔架构中,应用程序应该如何执行?

在64位和32位的英特尔架构中,应用程序应该如何执行?
EN

Stack Overflow用户
提问于 2009-10-15 06:59:31
回答 6查看 1.2K关注 0票数 6

我想知道普通C++应用程序在以下情况下的相对性能:

  1. 作为32位应用程序构建,运行在Intel 64位处理器(x64-64)上。
  2. 作为32位应用程序构建,运行在Intel 32位处理器(x86)上。
  3. 作为64位应用程序构建。

此外,在修改/开发应用程序使其在64位处理器上运行得更快时,应该考虑哪些因素?

EN

回答 6

Stack Overflow用户

发布于 2009-10-15 07:13:17

简短的回答:你可能不会注意到有什么不同。

更长的答案:64位x86具有更多的通用寄存器,这使编译器有更多的机会将局部变量优化到寄存器中,以加快访问速度。编译器也可以采用更现代的特性,例如。不需要为386优化代码,并且可以假设您的CPU有类似SSE的东西,而不是用于浮点运算的旧的x87 FPU。但是指针的宽度是原来的两倍,这对缓存来说更糟。

票数 7
EN

Stack Overflow用户

发布于 2009-10-15 08:42:13

CPU密集型程序在64位上可能会明显地加快速度.处理器具有16,而不是8个可用的通用寄存器,它们也是宽度的两倍(64而不是32位)。

此外,SSE指令的寄存器数量翻了一番,从8个增加到16个,这有助于多媒体应用程序或其他做大量浮点计算的应用程序。

有关详细信息,请参阅维基百科的x86-64

还有一点还没有提到,64位版本的操作系统(如Windows和Linux )在64位系统上使用不同的呼叫约定进行函数调用;参数不是在堆栈上传递参数,而是在寄存器中传递(更好),这在原则上更快。因此,软件将更快,因为有较少的功能调用开销。

票数 5
EN

Stack Overflow用户

发布于 2009-10-15 07:28:58

通常,您不会找到对64位操作的支持不同的等效处理器,因此很难对1)和2进行任何具体的比较。另一方面,32位和64位模式的构建之间的差异完全取决于应用程序。64位版本可能比32位版本稍慢或稍快.如果您的应用程序使用了大量临时变量,那么64位模式的增加寄存器集在性能上会产生很大的差异。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1570678

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档