NTD*_*DLS 44 c++ 64-bit x86 x86-64 cpu-architecture
我知道x64架构的一些显而易见的好处(更高的可寻址RAM地址等)......但是:
caf*_*caf 65
x86-64有点特殊情况 - 对于许多架构(例如SPARC),编译64位模式的应用程序并没有给它任何好处,除非它可以有利地使用超过4GB的内存.它所做的就是增加二进制文件的大小,如果它影响缓存行为,实际上可以使代码变慢.
但是,x86-64不仅提供了64位地址空间和64位整数寄存器 - 它还使通用寄存器的数量增加了一倍,这在像x86这样的寄存器不足的体系结构上可以显着提高性能,只需重新编译.
它还允许编译器假设存在许多扩展,如SSE和SSE2,这也可以显着改善代码优化.
另一个好处是x86-64增加了PC相对寻址,这可以显着简化与位置无关的代码.
但是,如果应用程序对性能不敏感,那么这一点也不重要.
jal*_*alf 27
我还没有看到的一个可能的好处是,它可能会发现潜在的错误.将端口移植到64位后,会进行一些更改.某些数据类型的大小会发生变化,调用约定会更改,异常处理机制(至少在Windows上)会发生更改.
所有这些都可能导致隐藏的错误浮出水面,这意味着您可以修复它们.
假设您的代码是正确且没有错误的,理论上移植到64位应该像轻弹编译器开关一样简单.如果失败了,那是因为你依赖语言不能保证的东西,因此,它们是潜在的错误来源.
sve*_*vec 17
这是64位为您做的:
我已经移植了许多C++应用程序,并看到使用64位代码加速10%(相同的系统,相同的编译器,唯一的变化是32位与64位编译器模式),但大多数应用程序是做了相当数量的64位数学.因人而异.
我不担心32位支持很快就会消失.
(编辑包括评论中的注释 - 谢谢!)
小智 5
尽管32位将以某种形式存在一段时间,但Windows Server 2008 R2仅附带64位SKU.早在Windows 8中,随着更多软件迁移到64位,我不会对WOW64作为安装选项感到惊讶.WOW64是一种安装,内存和性能开销.32位Windows中的3.5GB RAM限制以及不断增加的RAM密度将促进此迁移.我宁愿拥有比CPU更多的内存......
拥抱64位!花点时间使您的32位代码与64位兼容,这是一个简单而直截了当的问题.对于正常应用程序,更改更准确地描述为代码更正.对于司机,选择是:适应或失去用户.到时候,您将准备好在任何平台上进行重新编译.
IMO目前的缓存相关问题没有实际意义; 该领域的硅改进和进一步的64位优化将即将到来.