我自信地说,我们编写的99%的应用程序不需要处理超过2Gb的内存。当然,运行64位的 OS 有很多明显的好处可以解决更多的RAM问题,但有没有特殊原因可以将典型的应用程序编译为64位?
答案 0 :(得分:19)
64位可能会带来性能改进。一个很好的例子是函数调用中的一些参数是通过寄存器传递的(在栈上推送的东西较少)。
修改强> 当我研究使用64位构建和32位构建运行产品的一些差异时,我查看了一些旧笔记。我在四核64位机器上运行测试。因此,存在将苹果与橙子进行比较的问题,因为32位显然在仿真模式下运行。但是,似乎很多我读过的内容such as this, for example,一直都说WOW64的速度并不重要。但即使该声明不正确,您的应用程序几乎肯定会在64位操作系统上运行。因此,在64位计算机上对32位版本与64位版本进行比较具有价值。
在我执行的测试中(当然不全面),我没有发现任何32位版本更快的情况。但是,当运行64位版本时,我运行的许多SQL密集型操作(高CPU和高I / O)的速度提高了20%到50%。这些测试涉及一些相当“丑陋”的SQL语句以及一些具有高并发性的TPCC测试。当然,很大程度上取决于编译器开关,所以你需要做自己的测试。
答案 1 :(得分:14)
现在将它们构建为64位,即使您从未发布过构建版本,也可以帮助您查找和修复以后在强制构建和发布为64位时遇到的问题。
答案 2 :(得分:10)
x64有8个通用寄存器,在运行32位代码时不可用。这是三倍的数量(如果将ESI,EDI,EBP和ESP视为通用目标,则为两倍);我不这样做。这可以在使用四个以上变量的函数中节省大量的加载和存储。
答案 3 :(得分:9)
不要低估提供产品的原生64位版本的营销价值。
此外,您可能会对有多少人处理需要尽可能多内存的应用感到惊讶。
答案 4 :(得分:6)
我只会说,只要你需要2GB以上的话就可以了。
有一点是64位编译意味着(显然)64位指针。这意味着代码和数据结构变得更大,意味着应用程序。将从缓存中受益少一点,并且会更频繁地击中虚拟内存等。
所以,如果你不需要它,基本的效果就是让你的应用程序慢慢变得更加膨胀。
那就是说,随着时间的推移,你会更关心64位,因为这就是所有工具和库等都会被写入的。即使你的应用程序可以在64K中幸福地生活,你也不太可能使用16位代码 - 这些增益并不重要(无论如何它都是一个小的快速应用程序)并且肯定被所涉及的麻烦所抵消。到时候,我们会以同样的方式看到32位。
答案 5 :(得分:5)
您可以将其视为面向未来的。它可能还有很长的路要走,但考虑到未来几年,64位操作系统和CPU无处不在(考虑当32位接管时16位消失)。如果您的应用程序是32位且所有竞争对手已经转移到64位,那么您的应用程序可能会被视为(或被竞争对手指责为)过时,较慢或无法更改。也许甚至有一天对32位应用程序的支持将被删除或不完整(Windows 7能否正确运行16位应用程序?)。如果您现在已经构建了64位版本的应用程序,则可以避免这些问题。如果你把它推迟到以后,你可能会在现在和你移植之间编写更多的代码,那么你的端口会更难。
对于很多应用程序而言,没有太多令人信服的技术原因,但如果这很容易,现在移植可能会为您节省更多的时间。
答案 6 :(得分:1)
如果您不需要扩展地址空间,则以64位模式提供任何功能都不会产生任何缺点,例如增加内存消耗和缓存压力等。
虽然我们提供64位版本,但我们的客户正在推动我们减少内存消耗,以便他们获得这些优势。
答案 7 :(得分:1)
所有可能需要大量内存的应用程序:想要在内存中缓存大量数据的数据库服务器,处理大量数据的科学应用程序,......
答案 8 :(得分:1)
我最近阅读了这篇文章 Optimizing software in C++ 。在章节2.3 Choice of operating system
中,对64和32位系统的优势和劣势进行了比较,并对Windows进行了一些具体的观察。
Mark Wilkins已经在这篇帖子中提到过更多关于函数调用的寄存器。 64位系统的另一个有趣特性是:
The SSE2 instruction set is supported on all 64-bit CPUs and operating systems.
SSE2指令可以提供出色的优化,并且它们正在被越来越多地使用,因此在我看来这是一个值得注意的功能。
答案 9 :(得分:0)
Fastcall 通过将前四个参数保存在寄存器中,使调用子程序更快。
答案 10 :(得分:0)
如果你说99%的应用程序不会从64位中受益,那对你个人来说可能就是这样,但白天我使用Visual Studio和Xcode来编译具有大代码库的C ++,搜索多个-Gb存储库,包含Google桌面和Spotlight。然后我回家用一个使用几个Gb声音库的音序器写音乐,并在我的20Gb照片上做一些photoshopping,也许用假日剪辑做一些视频编辑。
所以对我来说(我敢说很多其他用户),拥有这些应用程序的64位版本将是一个很大的优势。文字处理器,网络浏览器,电子邮件客户端:也许不是但任何与大媒体有关的事情都会受益。
答案 11 :(得分:-3)
每个时钟周期可以处理更多数据,这可以提高性能,例如加密,视频编码等应用