Delphi 64位?

Raf*_*cci 21 delphi 64-bit

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

编辑:

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

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

编辑

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

Dav*_*vid 28

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

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

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

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

  • 特定 Delphi:编译器将使用SSE/SSE2指令进行浮点计算,其中当前的32位编译器仅使用x87 FPU指令(我认为.)这应该可以提高浮点数学的速度.你可能甚至都不会注意到,除非你的应用程序高度依赖FP(游戏,或者数据处理应用程序,这类事情.)

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

如果您决定转换,您可能会发现 此线程非常有用.

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

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

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

  • 如果你想要一个很大的不同,"更快的速度" 通过算法或线程更改比通过64位编译器更有可能实现.

  • "我的客户也问我关于我的应用程序的x64版本,但我真的不明白他们为什么要求它,因为他们实际上是不知道什么是64位应用程序的律师." 他们有机会听说64位更好或更快.在理想的世界中,客户会有基于现实的要求,但情况并非总是如此.实际上,如果客户想要这样的东西,可能值得转换,因为它让他们感到高兴:快乐的客户是好的,他们可能会为新版本付钱,这可能有助于您公司的口碑声誉.

  • 为非常好的解释性帖子+1. (4认同)

Ken*_*ite 14

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

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


Chr*_*ton 10

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

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


Lor*_*tel 5

大多数程序都不会关心.

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


Dav*_*nan 5

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

除此之外,对 64 位的最大推动是对其他程序的扩展。例如外壳扩展、Excel 插件、MATLAB 扩展等。

  • @Cosmin 截至今天,我正在与一个拥有四处理器、四核机器、每核 4 个线程的客户打交道。那是64核。碰巧的是,我的应用程序可以使用大到足以引起问题的有限元模型。目前的解决方案是使用单独的进程,但这对用户来说很不方便。一个 64 位的 Delphi 将使这个问题消失。 (2认同)
  • 我想知道什么是真正的多核。基本上你说“有时你需要更多的内存”无论是中等大小的内核乘以一堆内核,还是一个内核处理的大内核都无关紧要,这样的陈述只会掩盖整体情况。 (2认同)