我想我专注于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(OS-X 10.5.8)上运行
更新:
我注意到,正在开发一种新的混合x32 ABI(应用程序二进制接口),它是64b但使用32b指针。对于某些测试,与32b或64b相比,它导致更小的代码和更快的执行速度。