首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >64位程序比32位版本更大更快吗?

64位程序比32位版本更大更快吗?
EN

Stack Overflow用户
提问于 2010-03-04 18:20:04
回答 7查看 115.4K关注 0票数 88

我想我关注的是x86,但我通常对从32位到64位的迁移感兴趣。

从逻辑上讲,我可以看到,在某些情况下,常量和指针会更大,因此程序可能会更大。为了提高效率,希望在单词边界上分配内存,这意味着分配之间会有更多的空白。

我还听说,当上下文切换时,由于可能存在重叠的4G地址空间,x86上的32位模式必须刷新其缓存。

那么,64位的真正好处是什么呢?

作为补充问题,128位会更好吗?

编辑:

我刚刚编写了我的第一个32/64位程序。它生成16字节(32b版本)或32字节(64b版本)对象的链表/树,并对stderr进行大量打印-这不是一个真正有用的程序,也不是什么典型的程序,但它是我的第一个程序。

尺寸: 81128(32b)与83672(64b) -差别不大

速度: 17s(32b) v24s(64b)-在32位操作系统( OS -X 10.5.8)上运行

更新:

我注意到一个新的混合x32 ABI (应用程序二进制接口)正在开发中,它是64b的,但使用32b的指针。对于某些测试,它比32b或64b产生更小的代码和更快的执行速度。

https://sites.google.com/site/x32abi/

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2010-03-04 18:43:27

除非您需要访问比32b寻址所允许的更多的内存,否则好处将是很小的。

当在64bCPU上运行时,无论您运行的是32b代码还是64b代码(您使用相同的缓存和相同的总线),都会得到相同的内存接口。

虽然x64架构有更多的寄存器,可以更容易地进行优化,但这通常会被指针现在更大的事实所抵消,使用任何带有指针的结构都会导致更高的内存流量。我估计与32b应用程序相比,64b应用程序的总内存使用量增加了大约15-30%。

票数 31
EN

Stack Overflow用户

发布于 2010-03-04 19:18:31

我通常会看到,与x86相比,x86-64上计算密集型代码的速度提高了30%。这很可能是因为我们有16 x 64位通用寄存器和16 x SSE寄存器,而不是8 x 32位通用寄存器和8 x SSE寄存器。这适用于x86-64 Linux上的英特尔ICC编译器(11.1) -与其他编译器(例如,gcc)或其他操作系统(例如,Windows)的结果当然可能不同。

票数 44
EN

Stack Overflow用户

发布于 2012-12-21 20:55:10

除了拥有更多的寄存器之外,64位在默认情况下还具有SSE2。这意味着你确实可以并行执行一些计算。SSE扩展还有其他好处。但是我想主要的好处是不需要检查扩展的存在。如果它是x64,那么它有可用的SSE2。...If我的记忆没记错。

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

https://stackoverflow.com/questions/2378399

复制
相关文章

相似问题

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