我想我关注的是 x86,但是我通常对从32位移动到64位感兴趣。
逻辑上,我可以看到,在某些情况下,常量和指针会更大,因此程序可能会更大。为了提高效率,希望在单词边界上分配内存意味着在分配之间有更多的空白。
我还听说过,由于可能存在重叠的4G 地址空间,x86上的32位模式在进行上下文切换时必须刷新缓存。
那么,64位的真正好处是什么呢?
作为补充问题,128位会不会更好?
编辑:
我刚刚编写了我的第一个32/64位程序。它创建16字节(32b 版本)或32字节(64b 版本)对象的链表/树,并向 stderr 进行大量打印——这不是一个真正有用的程序,也不是什么典型的程序,但它是我的第一个。
大小: 81128(32b) vs 83672(64b)-所以没有太大区别
速度: 17s (32b) v24s (64b)-运行在32位 OS (OS-X10.5.8)上
更新:
我注意到一个新的混合 x32 ABI (应用二进制接口)正在开发中,它是64b,但使用32b 指针。对于某些测试,它的结果是比32b 或64b 更小的代码和更快的执行速度。