Performance 提供64位特定版本的软件 我希望通过将我的C++客户端和服务器构建成64位代码,可以看到性能上的提高吗?
什么样的应用程序从64位特定的构建中受益Performance 提供64位特定版本的软件 我希望通过将我的C++客户端和服务器构建成64位代码,可以看到性能上的提高吗?,performance,64-bit,Performance,64 Bit,什么样的应用程序从64位特定的构建中受益 我想任何广泛使用long的应用程序都会受益,或者任何需要大量内存(即2Gb以上)的应用程序都会受益,但我不确定还有什么其他好处。真的没有多少其他好处。尽管在某些情况下,作为程序员,编写64位应用程序对您有一些好处。一个简单的例子是一个应用程序,其主要焦点是与注册表交互。作为一个32位进程,您的应用程序将无法访问64位系统上的大量注册表。据您所知,如果您使用大量和/或深循环,则使用64位CPU的额外通用寄存器的好处最大。由于额外的寄存器和新的传递参数约定,
我想任何广泛使用long的应用程序都会受益,或者任何需要大量内存(即2Gb以上)的应用程序都会受益,但我不确定还有什么其他好处。真的没有多少其他好处。尽管在某些情况下,作为程序员,编写64位应用程序对您有一些好处。一个简单的例子是一个应用程序,其主要焦点是与注册表交互。作为一个32位进程,您的应用程序将无法访问64位系统上的大量注册表。据您所知,如果您使用大量和/或深循环,则使用64位CPU的额外通用寄存器的好处最大。由于额外的寄存器和新的传递参数约定,您有望获得收益。(实际上与其他寄存器链接).在努力弄清楚64位版本是否有技术案例之前,您必须验证是否有商业案例。您的客户是否要求这样的版本?它是否会让您在与其他供应商的竞争中获得决定性的优势?创建这样的版本的成本是多少?将产生什么商业成本通过在您的会计、销售和市场营销流程中添加其他项目来进行重新注册 虽然我认识到,在掌握竞争优势之前,你需要了解绩效改进的潜力,但我强烈建议你从全局的角度来解决问题。如果你是一家小型企业或单独经营的企业,你有义务进行适当的尽职调查。如果你为更大的组织,你的上司会非常感激你在思考这些问题时所做的努力(或者,如果你似乎还没有准备好回答这些问题),你会认为整个问题都是多余的。 综上所述,我的总体技术回应是,绝大多数面向用户的应用程序将看不到64位版本的优势。想想看:当前应用程序中有多少性能问题来自处理器绑定(或RAM访问绑定)?当前应用程序中是否存在性能问题?(如果不是,你可能不应该问这个问题。) 如果是客户端/服务器应用程序,我敢打赌网络延迟对客户端性能的贡献要大得多(特别是当您的查询通常返回大量数据时)。假设这是一个数据库应用程序,您的性能配置文件中有多少是由于服务器上的磁盘延迟时间造成的?如果您考虑影响性能的所有因素,您将更好地了解您的特定应用程序是否会从64位升级中受益,如果是,您是否需要同时升级双方或w您的所有好处都将仅从服务器端升级中获得。继续@的评论,如果是服务器构建,或者如果您正在向Linux用户分发,64位构建(目前)更有意义 似乎更多的Windows工作站仍然是32位的,而且新版本的客户群可能不多 另一方面,现在许多服务器安装都是64位的:RHEL、Windows、SLES等。我认为,为它们构建将切断许多潜在的使用 桌面Linux用户也可能运行他们最喜欢的发行版的64位版本(最有可能是Ubuntu、SuSE或Fedora)
但是,构建64位的主要明显好处是,您可以绕过3GB的内存使用障碍。英特尔x64与x86的体系结构优势
- 更大的地址空间
- 更丰富的寄存器集
- 可以链接外部库或加载64位插件
- 所有指针(以及许多指令)占用2倍的内存,在最坏的情况下将有效处理器缓存大小减半
- 无法链接外部库或加载32位插件
即使为应用程序构建64位版本没有意义(可能没有),值得花时间学习如何构建,以便至少所有新代码和将来的重构都能与64位兼容。好的方面,尽管记住32位代码仍然可以使用WoW64在64位窗口上运行,因此32位软件不排除安装在那些OSON窗口上,默认内存限制是实际上是2GB的pr过程,如果你在.NET领域工作(我不知道非托管代码),实际限制大约是1.5GB,因为框架本身占用了相当大的内存。好的观点@Morten..我在这个问题中没有看到任何特定于操作系统的信息,所以选择了非特定的答案:)和@John-如果在Linux上安装32位libs,同样可以运行32位libs-