Delphi 64位?

时间:2011-04-15 00:03:40

标签: delphi 64-bit

正如每个人都知道的那样,Delphi 64位正在发展(至少每个delphi程序员)。除了代码集关于64位Delphi应用程序(以及代码设备没有多说)的好处之外,我还能从64位Delphi应用程序中获益吗?一旦codegear发布它,将我的应用程序移植到64位真的是一个好主意吗?

修改

我只是问它,因为我想要所有的意见。现在,我可以说我真的需要更多可用于我的应用程序的内存,因为它消耗了大量资源。如果可能的话,我真的可以使用更快的速度。我不需要shell扩展插件。

我的客户也问我关于我的应用程序的x64版本,但我真的不明白他们为什么要求它,因为他们实际上是不知道什么是64位应用程序的律师。

修改

我实际上并没有直接参与应用开发。我是一个技术团队的一员,我创建了我工作的公司中的其他开发人员用来真正开发最终应用程序的东西。所以,我的工作是做技术工作,将应用程序移植到x64是我做的事情,但我需要解释为什么我这样做对我的上级。

7 个答案:

答案 0 :(得分:27)

64位程序与为32位(x86)编译的程序相比具有以下优点:

  • 更多寄存器。 64位x86芯片有several more registers,理论上(如果编译器利用),这可以在某些情况下产生更快的代码。

  • 更多内存。对于32位程序,如果使用/LARGEADDRESSAWARE编译,则通常限制为2GB地址空间或总共4GB地址空间,由于Windows内核/用户空间分裂,实际上大约3.5GB。 64位进程可以解决更多问题。这只有在您的应用需要大量内存时才有用。

  • 能够为资源管理器构建64位程序的插件。除非你使用COM作为数据编组的插件,否则你不能在Windows的一个进程中混合使用32位和64位代码,例如加载32位DLL的64位EXE。例如,如果你想编写一个Explorer插件,你就无法使用旧版Delphi的64位版本的Explorer。您将能够使用64位版本。

  • <强> Delphi的特异性:the compiler will use SSE/SSE2说明作为浮点计算,其中当前32位编译器只使用的x87 FPU的指令(我想。)这应该给一个速度增加浮点数学。你可能甚至都不会注意到,除非你的应用程序高度依赖FP(游戏,或者数据处理应用程序,这类事情。)

您的问题的答案“我将从64位Delphi应用程序中受益吗?” 高度依赖于您的具体应用。一般情况下,除了速度提升之外,不太可能有太大的好处。不要依赖64位加速缓慢的应用程序:您仍然需要为大幅度提升进行算法更改。 64位不是魔术子弹。除此之外,如果你已经遇到32位限制之一,你只需要改变 - 我怀疑你没有,或者你不会问这个问题。

如果您决定转换,您可能会发现this thread非常有用。

但另一件事:即使您不需要更改,也可能需要,特别是如果您的应用是个人项目。您可能会学习东西,当您修复32/64位问题时,您的代码质量会更高,而像这样的项目可能很有趣。毕竟你是一名程序员:)

编辑:我发现你已经用更新了你的问题“我可以说我真的需要更多可用于我的应用程序的内存,因为它消耗了大量资源。我真的可以使用更多速度,如果可能的话。“

  • 有哪些资源?记忆? 64位将为您提供更大的可寻址地址空间,就是这样。如果算作资源,它不会给你更多的GDI句柄等。但是,如果你确实需要更多内存,那么64位将值得转换为。

  • “更快的速度”,如果你想的的差异,更可能通过不是通过一个64位编译器算法或线程的变化来实现。

  • “我的客户也问我关于我的应用程序的64位版本,但我真的不明白为什么他们所要求的,因为他们实际上是谁拥有的律师不知道什么是64位应用程序。“他们听说64位更好或更快。在理想的世界中,客户会有基于现实的要求,但情况并非总是如此。务实地讲,如果客户希望这样的事情,它可能是值得只是转换,因为这让他们快乐:快乐的客户是好的,他们可以支付你的新版本,它可以帮助您的公司字的口碑声誉。

答案 1 :(得分:14)

您是否真的需要在应用程序中访问大型(> 4GB)内存,例如视频或图像处理,或者非常快速地处理大量数据?您的应用程序是否需要在64位版本的Windows上运行?您是否有抱怨的客户或客户,因为您的应用程序的64位版本不可用?

如果您需要立即将应用更新为64位,那么您已经知道了。既然你没有,你可能有很多时间这样做 - 请记住,大多数应用程序的32位版本在64位Windows版本上运行良好。

答案 2 :(得分:10)

如果您编写shell扩展,您已经知道为什么需要64.在我的情况下,我有一个由Windows资源管理器加载的DLL,它不能,绝对不会,加载32位DLL。有些应用程序将受益于64位,但大多数情况下,IMO不会。对于像我这样的东西,64位比其他任何东西都更令人烦恼。

好主意?只有你认为它会让你更加美丽。否则,花在提高质量或添加功能上的时间会更长。除非您使用的是纯本机VCL控件和库,否则您可能需要等待第三方支持才能赶上。我仍在修复和替换与转换为Unicode相关的库....

答案 3 :(得分:5)

大多数节目都不关心。

我有一个我编写的程序,我将制作一个64位版本,这将增加缓存大小,即便如此,这只是因为我认为最好的权衡取决于最大内存使用量超过2GB。

答案 4 :(得分:4)

64位重要的一种情况是多核机器上的数据并行,多线程数值应用程序。对于这样的应用程序,如果数据不能分成足够小的部分,则32位地址空间可能会受到约束。

除此之外,64位的最大推动力是扩展到其他程序。例如shell扩展,Excel加载项,MATLAB扩展等。

答案 5 :(得分:3)

不,请将您的应用程序保留32位。

“我的客户也问我关于我的应用程序的x64版本,但我真的不明白他们为什么要求它”

您的用户希望您的应用程序在64位版本的Windows上完美运行。您应该对此进行测试并告诉他们您已对其进行了测试,并且它在64位Windows上运行正确。

答案 6 :(得分:3)

我的一些客户遇到了这个问题。这很大程度上是因为各公司的IT部门都有一份清单,列出了当公司购买新软件(或批准更新等)时需要“考虑”的事项。这些检查清单会不时更新,以更好地反映现代IT环境,但这并不总是意味着新元素在您自己的应用软件环境中有意义。

在某些时候,人们开始说'因为我们有64位Windows XP / Vista / 7等,我们需要确保任何新软件都是64位'。作为开发人员,我们知道情况并非如此,但如果您尝试向非技术人员解释这一点,那么当您试图掩盖您的应用实际上不是64位这一事实时,它通常会出现。当你是一个与其他供应商竞争激烈的小型定制供应商时,你不能让你的工作失败,因为在某个人的检查清单上有一个很大程度上不相关/不重要的“功能”。

到目前为止,我的方法是告诉客户该软件已在64位Windows上经过全面测试和验证,但已经开发出来,以便在32位或64位Windows上运行相同的版本。这是完全正确的,因为我的应用程序主要基于Delphi 2007,并且在过去一年左右我开始在64位Win7上进行所有测试作为第一手段(然后在32位XP下再次执行测试的子集,在键里程碑)。

顺便说一句,无论是在小型商业环境中还是(更令人惊讶的是)家庭环境,我都看到了比32位更安装的64位Win7安装。我在过去6个月里看到的大多数新机器似乎都配备了64位Win7,我觉得这很有趣。

我也喜欢The_Fox对原始问题的评论 - 我可能需要相应地更新我的启动画面。特别是如果我能检测到程序在64位版本的Windows上运行...