有没有什么真正的意义,将Windows应用程序编译为64位?

有没有什么真正的意义,将Windows应用程序编译为64位?,第1张

概述有没有什么真正的意义,将Windows应用程序编译为64位?

我自信地说,我们写的99%的应用程序不需要处理超过2Gb的内存。 当然,运行64位的 *** 作系统有更多的好处,可以解决更多的内存问题,但是有没有什么特别的原因会导致一个典型的应用程序被编译成64位呢?

64位的dll寄存器

在Ubuntu的单声道和非托pipe代码

在C#中执行相同环境中的多个命令

列出使用智能卡阅读器的进程

如何识别用户界面过程中的过程?

使用64位可能会有性能改进。 一个很好的例子是函数调用中的一些参数通过寄存器传递(更少的东西推入堆栈)。

编辑从我学习使用64位版本和32位版本运行产品的一些差异时,我查了一些旧的笔记。 我在四核64位机器上运行测试。 所以有一个比较苹果和橙子的问题,因为32位显然是在仿真模式下运行的。 不过,看来我这样读的很多东西,比如说一贯的说WOW64的速度没那么大。 但即使这种说法不正确,您的应用程序几乎肯定会在64位 *** 作系统上运行。 因此,64位机器上的32位版本与64位版本的比较具有价值。

在我进行的测试中(当然不是全面的),我没有发现32位版本更快的情况。 但是,运行64位版本时,我运行的许多sql密集型 *** 作(高cpu和高I / O)速度提高了20%到50%。 这些测试涉及一些相当“丑陋”的SQL语句,还有一些高并发性的TPCC测试。 当然,编译器开关有很多依赖,所以你需要做自己的测试。

现在将它们构建为64位,即使您从不发布构建版本,也可以帮助您发现和修复稍后在64位版本中构建和发布时遇到的问题。

x64有八个通用寄存器,运行32位代码时不可用。 如果把ESI,EDI,EBP和ESP作为一般用途,那么这个数字就是原来的三倍(我不这么认为)。 这可以在使用四个以上变量的函数中节省大量的加载和存储空间。

不要低估提供本地64位版本产品的市场价值。

此外,您可能会惊讶有多少人在需要尽可能多的内存的应用程序上工作。

我只能说,如果你需要更多的2GB的话。

一件事是64位编译手段(显然)是64位指针。 这意味着代码和数据结构变得更大,这意味着应用程序。 将从缓存中受益少一些,并会更频繁地击中虚拟内存等。

所以,如果你不需要它,基本的效果是让你的应用程序更慢,更无缘无故的臃肿。

也就是说,随着时间的推移,无论如何你会关心更多的64位,因为这就是所有的工具和库等。 即使你的应用程序在64K中可以很快乐的生活,你也不可能使用16位的代码 – 这些收益并不重要(无论如何,这是一个小小的快速应用程序),当然,这个麻烦也是无关紧要的。 及时,我们会看到32位的方式很相似。

你可以认为它是面向未来的。 这可能还有很长的一段路要走,但考虑到未来几年,64位 *** 作系统和cpu无处不在(考虑32位接管时16位是如何消失的)。 如果您的应用程序是32位的,并且您的所有竞争对手已经升级到64位,那么您的应用程序可能会被视为(或被您的竞争对手指责)已过时,速度较慢或无法更改。 也许即使有一天对32位应用程序的支持也会被删除或不完整(windows 7可以正常运行16位应用程序吗?)。 如果您现在已经在构建应用程序的64位版本,则可以避免这些问题。 如果你拖延到最后,你可能会写更多的代码,现在和之间的端口,那么你的端口将更加困难。

对于很多应用程序来说,没有太多引人注目的技术原因,但是如果很容易,现在移植可能会为您节省以后的工作量。

如果你不需要扩展的地址空间,那么以64位模式交付就不会提供任何东西,并有一些缺点,如增加内存消耗和缓存压力。

虽然我们提供64位版本,但是我们的客户正处于极限,他们正在推动我们减少内存消耗,从而获得这些优势。

所有可能需要大量内存的应用程序:想要在内存中缓存大量数据的数据库服务器,处理大量数据的科学应用程序,…

我最近阅读了这篇文章, 用C ++优化软件 。 在第2.3 Choice of operating system章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指令可以提供出色的优化,并且越来越多地被使用,所以在我看来这是一个显着的特性。

快速调用通过将前四个参数保存在寄存器中来加快调用子程序的速度。

当你说99%的应用程序不会从64位获益的时候,这对你本人来说可能是真的,但是在白天,我使用Visual Studio和Xcode来编译一个大代码库的C ++,搜索多GB存储库与Google桌面和Spotlight。 然后我回家用音序器使用几个Gb库来编写音乐,在我20Gb的照片上做一些照片,也许用我的假期剪辑做一些视频编辑。

所以对我来说(我敢说很多其他用户),拥有这些应用程序的64位版本将是一个很大的优势。 文字处理器,网络浏览器,电子邮件客户端:也许不是 但是任何与大媒体有关的事情都会真正受益。

每个时钟周期可以处理更多的数据,这可以提高性能,例如加密,视频编码等应用

总结

以上是内存溢出为你收集整理的有没有什么真正的意义,将Windows应用程序编译为64位?全部内容,希望文章能够帮你解决有没有什么真正的意义,将Windows应用程序编译为64位?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1154971.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存