我应该提供我的应用程序的x64版本吗?

时间:2010-01-02 05:05:59

标签: windows 64-bit 32bit-64bit

也许我在这里错过了x64平台的一个主要观点,但我的看法是,当大量内存,大指针时,x64应用程序只比x86版本(在x64操作系统和硬件上)表现更好。或涉及其他要求的因素。

然而,除了标准的x86版本之外,我还开始注意到一些较小的应用程序提供x64版本的安装程序。由于x86在使用WoW的Windows x64上运行得很好,我发布我的应用程序的x64编译版本有什么好处吗?我认为:

优点:

  • 可能性能更高(在什么条件下)

缺点:

  • 创建/支持的附加构建
  • x64目标中可能存在的x86目标中不存在的错误
  • 依赖于x64版本的供应商/操作系统DLL,需要不同的安装清单并引入其他故障排除复杂性

有什么令人信服的理由导致我重新考虑添加我的应用程序的x64编译版本?

7 个答案:

答案 0 :(得分:4)

编译和调试x64版本的另一个潜在原因是它可能会暴露x86版本中的隐藏错误。例如,这可能会暴露32位整数和(现在)64位指针之间的不正确转换。这也使您在将来支持x64。

但是,除非您的应用程序受益于64位整数,额外的cpu寄存器,更大的内存空间(超过3.5Gb),或实现设备驱动程序,否则保持32位应用程序是可以的。所有主流操作系统都支持同时运行x32和x64应用程序,因此不会对64位应用程序产生重大推动。

顺便说一句。基于.NET的应用程序自动受益于在64位系统上执行而无需更改任何代码。无需额外的测试。

答案 1 :(得分:3)

潜在的性能提升主要涉及64位整数的使用(在我的机器上的x64构建中的速度大约是x86的4倍)以及编译器可能假设某些CPU功能普遍存在于支持x64的CPU,例如SSE2,& c。;这可以带来更优化的代码。

对于许多应用程序,特别是小型应用程序,64位清理并不困难,对于较大的应用程序,这是一个令人头疼的问题。通常,令人信服的理由很少。但是默认情况下,某些平台不会在64位版本中安装32位支持(我认为需要明确告知FreeBSD这样做,但我可能会错误)。

答案 2 :(得分:1)

如果你的程序使用了很多long long,那么你的程序会受益,WOW当然意味着性能会受到轻微打击(虽然因为这种原因CPU具有兼容性模式,因此非常小)...

对32位程序的Windows支持将来会降级(尽管速度很慢),所以我说在另一年或者2年,您可以想知道为什么要部署32位应用程序......

此外,64位构建的应用程序实际上可以比32位构建更加优化,因为对于64位,您可以保证有很多东西,例如SSE2。

答案 3 :(得分:1)

性能;由于已经陈述的原因,x86_64比x86快一点(这也取决于你的编译器)。此外,它更容易支持真正庞大的数据集,但当然许多应用程序永远不需要去那里。

当然在Linux和OS X上,你真的应该支持x86_64;我在OS X上输入64位浏览器,而角落里的Linux机箱也几乎完全是64位。 64位Windows是一个问题,但现在即将到来(与驱动程序)。

答案 4 :(得分:1)

这通常基于人为因素而非客观技术推理。 64位是最新的,最好的,必须优于32位。如果客户想要它,客户永远是对的。已经与Windows用户进行过交谈,他们说他们的目标是让他们在Windows * 32中查看他们的进程列表时不会出现在他们的任何应用旁边。

在人们拥有64位操作系统并且只是想确保软件可以在他们的计算机上运行的兼容性方面,这也会引起混淆。期望普通人理解64位操作系统上32位进程之间的技术分界线是不现实的。除非在包装上明确说明,否则对于购买新软件的客户来说可能是一个混乱/担忧点。通常情况下,您会看到因为这个原因而提到的64位。通常这实际上只意味着64位兼容性。

现在有一些64位应用程序(flash player和google earth在我的列表中排名第一)不能很快到来。

答案 5 :(得分:1)

这是一个原因:与64位应用程序集成,例如编写shell扩展。 64位进程无法直接加载32位DLL,因此您必须将其设置为64位。

答案 6 :(得分:0)

尚未提及的一个因素是:WoW64 Is Now an Optional Feature for Server Core。当然,只有当您的应用程序需要在服务器系统上运行时才会出现问题。

同样,Windows PE,Windows RE等不包括Wow64。