我想我专注于 x86,但我通常对从 32 位到 64 位的转变感兴趣。
从逻辑上讲,我可以看到常量和指针在某些情况下会更大,因此程序可能会更大。为了提高效率而在字边界上分配内存的愿望意味着分配之间有更多的空白。
我还听说 x86 上的 32 位模式在上下文切换时必须刷新其缓存,因为可能会重叠 4G 地址空间。
那么,64 位的真正好处是什么?
作为补充问题,128 位会更好吗?
编辑:
我刚刚编写了我的第一个 32/64 位程序。它制作 16 字节(32b 版本)或 32 字节(64b 版本)对象的链表/树,并在 stderr 上进行大量打印——这不是一个真正有用的程序,也不是典型的程序,但这是我的第一个。
尺寸:81128(32b) v 83672(64b) - 所以差别不大
速度:17s(32b) v 24s(64b) - 在 32 位操作系统 (OS-X 10.5.8) 上运行
更新:
我注意到正在开发一种新的混合 x32 ABI(应用程序二进制接口),它是 64b 但使用 32b 指针。对于某些测试,它会产生比 32b 或 64b 更小的代码和更快的执行速度。