让它的C++开发应用程序在64位模式下运行有什么大的好处吗
Is there any big advantages of having its C++ developing applications running on a 64 bit mode?
我刚刚注意到,像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,更多的内存使用可能也是主要的缺点。简言之,性能可能会有所提高,但您的程序需要进行一些更改才能利用它。我建议在这两种架构上对您的程序进行基准测试,看看它是否会立即产生影响(而不可能更改任何内容)。
- 你能解释一下什么运行时错误是如何解决它的吗?
- 为什么无论你输入什么,这"while(cin.get(str,3))"只运行一次?
- 给定一个整数数组,需要在Max_Heap上运行操作。得到错误"segmentation fault",有什么想法吗?(C++)
- 这个递归函数有什么作用?运行时的复杂性是多少?
- 我需要安装什么才能获得在Windows Server 2012 R2 Standard上运行C++hello world
- 是什么导致我的循环在第一次迭代中运行得更慢
- O(NlogN)算法运行速度快于O(n)..等等,什么
- 什么是运行英特尔线程构建模块的 XCode 8 环境变量
- 运行简单的.oct文件时Octave崩溃,我的代码出了什么问题?
- 当我在支持 avx2 的机器上编译并在另一台仅支持 avx 的机器上运行二进制文件时会发生什么?
- 给定的两个代码有什么区别.一个在 ideone 上运行时超出时间限制,另一个工作正常
- 使用管道通过 TTY、PTY 或 execv() 运行 shell(例如 sh)有什么区别?
- 在Windows Server 2012上运行VS2019编译的应用程序需要什么?
- 我的代码中出现运行时错误的可能原因是什么?
- 在 cout 语句中首先运行什么?(C++17)
- 此代码中运行时间错误的原因是什么
- 每当我运行此程序C 时,我都会出现错误.我做错了什么
- 有什么理由更喜欢从 IDE 中运行应用程序而不是运行独立的可执行文件?
- 无法运行简单的 std::async 和 std::future 测试程序。错误:"has initializer but incomplete type."发生了什么?
- 在任何平台上执行任何Qt5应用程序的重要dll文件是什么(运行时文件dll)