32 位和 64 位应用程序开发

可以使用 XL C/C++ 来开发 32 位和 64 位应用程序。本节包含用于将 C 和 C++ 程序从 32 位方式移至 64 位方式的参考信息和其它可移植性注意事项。

如果只更改硬件和操作系统,则移植过程是真正的移植。作为迁移至 Linux 的过程的一部分,将 32 位应用程序移至 64 位编程模型意味着该过程不再是真正的移植,而是开发活动。当移植至 64 位环境时,具有下列特征中的任何一个的 32 位应用程序很可能需要更改:

在 64 位方式下进行开发允许应用程序利用更新和更快的 64 位硬件和操作系统来提高大型的、复杂的耗费大量内存的程序(例如,数据库和科学应用程序)的性能。受 32 位地址空间限制的应用程序(例如,数据库应用程序、Web 搜索引擎和科学计算应用程序)可受益于目标为 64 位方式的转换。64 位方式下的 I/O 绑定应用程序还可通过将数据保存在内存中而不是写至磁盘来提高性能,因为磁盘 I/O 通常比内存存取要慢。

能够直接在物理内存中处理较大的问题或许是 64 位机器最显著的性能优点。但是,某些应用程序在 32 位方式下编译比起在 64 位方式下重新编译来说执行性能更好一些。产生这种情况的一些原因是:

64 位应用程序的其它缺点是它们需要更多的堆栈空间来存放更大的寄存器。因指针大小更大,应用程序高速缓存占用量也更大。64 位应用程序不能在 32 位平台上运行。

下面列示了补偿 64 位程序的性能缺点的一些方法。

如果移至 64 位编程模型,则写得好的代码只需要进行极少量的修改和调试就可正确编译和运行。术语写得好意味着遵循语言标准且具有良好的编程习惯。在移至 64 位编程模型的上下文中,该术语还有这样的含义:代码既不取决于特定字节顺序也不取决于外部数据格式,它使用函数原型、适当的系统头文件和系统派生的数据类型。 IBM Copyright 2003