移动到64位时,内存使用量可能会增加多少?

Pet*_*son 7 c c++ 64-bit memory-management

将应用程序从32位移动到64位时,会增加内存使用量?

我知道指针的大小会加倍,我怀疑字符串中的字符是"聚集"以更有效地使用内存(所以不会使用更多的内存).

内存使用量还会增加吗?有没有它会减少,或非算术运算会看到速度的好处?

小智 7

你可能会看到额外的对齐,在这里和那里花费一些额外的字节.由于操作数中的64位常量,代码可能会更大.

至于速度,由于内存使用量增加,您可能会遇到速度减慢.CPU缓存将更快填满.

我已经看到从x86到x64的显着速度优势,因为x86的寄存器比x64架构少得多.编译器利用额外的寄存器来更好地优化代码.我在相同的硬件上看到了15%的加速.

  • 据我所知,@ Peter 32位可执行文件无法访问64位寄存器.告诉编译器它"可以使用"64位寄存器的最好方法是告诉它输出64位可执行文件. (4认同)
  • @Peter:不,没有办法用x86指令引用x64寄存器.如果要使用各种64位扩展,请编译为64位. (3认同)