使用 64 位方式优化操作

能够直接在物理内存中处理更多的数据,而不是依赖于磁盘 I/O ,这可能是 64 位机器最重要的性能优势。 但是,在 32 位 方式下编译的某些应用程序比在 64 位方式下重新编译时执行得更好。 其中的一些原因包括:
  • 64 位程序较大。 程序大小的增加对物理内存提出了更大的要求。
  • 64 位长除法比 32 位 整数除法更耗时。
  • 使用 32 位 带符号整数 作为数组下标或循环计数的 64 位程序 可能需要额外的指令以在每次引用数组 或循环计数递增时执行符号扩展。
对 64 位程序的性能负债进行补偿的一些方法包括:
  • 避免执行混合 32 位 和 64 位操作。 例如,将 32 位 数据类型添加到 64 位数据类型需要 32 位 进行符号扩展以清除 或设置 寄存器的上方 32 位 。 这会减慢计算速度。
  • 对于将频繁访问的变量 (例如循环计数器和数组下标) ,请使用 long 类型而不是 signedunsigned和 plain int 类型。 这样做将使编译器不必在返回期间截断或符号扩展数组引用,函数调用期间的参数和函数结果。