让它的C++开发应用程序在64位模式下运行有什么大的好处吗

Is there any big advantages of having its C++ developing applications running on a 64 bit mode?

本文关键字:什么 运行 模式 C++ 开发 应用程序 64位      更新时间:2023-10-16

我刚刚注意到,像chrome这样著名的应用程序在windows下没有任何64版本。

在我的公司里,我编写的应用程序在64位版本的windows下以32位模式运行。

我想知道我是否可以在64位模式而不是32位中构建应用程序,从而获得一些优势/性能增益

编辑:

通常,在哪种软件中,寄存器数量的增加将是有益的?

64(x86_64)位现在是主流。这里有两大优势:

  • 无需任何技巧即可获得更多内存
  • 更多通用和附加处理器寄存器

但你也有小麻烦:

  • 更多的内存消耗(通常比32位大20-30%)

我认为Google Chrome在Windows中以32位模式运行,因为有太多的32位插件(比如Flash)。另外还有64位的linux版本。

编辑其他问题

通常,如果您的应用程序使用数学(64位整数算术)、编码/编码/打包/拆包、密码学,您将获得好处。

另请参阅IBM 64位计算决策者指南http://www.onitecservice.com.br/produtos/arquiv_pdf/nocona64bit_onitec_service.pdf

哪些类型的应用程序将和不会利用从32位到64位计算的转换

按收益从大到小的顺序,类型为:

  • I/O密集型--任何从设备获取数据的时间超过处理它:数据库后端、电子商务、CRM、ERP、SAP、SAS、各种业务关键型和垂直应用程序,以及任何其他需要大量内存的应用程序。在里面一般来说,这些应用程序的性能从64位开始应该会有显著的改进硬件、操作系统和设备驱动程序,以及消除内存覆盖层和其他性能抑制剂
  • 计算密集型——高性能计算(HPC)与科学/技术计算,包括生命科学、地球物理研究;高端图形渲染;流媒体视频以及任何其他花费更多时间处理数据而不是检索数据的应用程序
  • 网关/安全基础设施--SSL服务器、目录服务、Internet缓存和数据库前端。这些应用程序可以从交换机中获得好处。你应该联系各个软件供应商,了解他们利用64位功能的计划
  • 标准基础设施-此类通常不会从64位计算中获得什么好处。应用程序包括文件和打印服务器、低容量/非关键业务应用程序,以及不太可能重写为64位的遗留应用程序

如果您有可能为64位目标进行编译,您应该这样做(imho)。你可以尝试分析你的应用程序,看看是否有实际的需求(内存消耗限制等)——但我喜欢在滚动运行的进程时看到应用程序管理工具中的"64位"标记。

64位模式应用程序有几个优点,主要原因是有更多的可用内存。如果编译器正确处理编译并相应地优化代码,您应该能够获得一些额外的性能。

试着做一个"真实世界"的测试——用64位和32位编译,并绘制一些性能图表。我在一个应用程序上做了这件事,它显示出大约20%的性能提升(更快的计算),程序可以加载的数据量突然变得"无限"。

(我对Chrome的最佳猜测是,他们依赖于一些仅在32位中运行的第三方库,或者可能使用一些仅32位的Windows API。)

无耻地刚刚扫描http://en.wikipedia.org/wiki/64-bit有优点也有缺点,有关详细信息,请查看维基百科页面。如上所述,64位版本的应用程序的主要优势是能够访问x86-64体系结构中的更多寄存器。

同样考虑到这一页,没有迹象表明有任何开箱即用的显著性能提升。您必须调整应用程序以利用它提供的功能,即更多的寄存器和更多的内存,因为相同的数据在内存中占用了更多的空间(由于指针更长,可能还有其他类型,以及对齐填充)。

根据W/p,更多的内存使用可能也是主要的缺点。简言之,性能可能会有所提高,但您的程序需要进行一些更改才能利用它。我建议在这两种架构上对您的程序进行基准测试,看看它是否会立即产生影响(而不可能更改任何内容)。

相关文章: