在RAD Studio 12.2的发表会中提到了新的Delphi 64位编译程序, 这也引起了很多Delphi使用者的疑问和好奇, 询问Delphi 64位编译程序不是早就有了吗? 为什么12.2又多了一个新的Delphi 64位编译程序? 那二者有什么不同吗?
1、12.2新的Delphi 64位编译程序是位于安装路径bin64\之中的dcc64.exe, 而原本的Delphi 64位编译程序则是位于bin32\之中的dcc64.exe. 12.2的新的Delphi 64位编译程序是只有企业版和架构师版才提供, 项目版没有这个新的64位编译程序. 而且在内定上这个新的64位编译程序并没有启动, 要使用它, 企业版和架构师版的用户必须在项目选项的Delphi Compiler项目中勾选Use MSBuild externally to cpmpile选项再于其下选择x64才能启动它, 也就是说新的Delphi 64位编译程序必须由MSBuild启动编译, 如下所示:

在下图中可以看到一个范例项目由原本的Delphi 64位编译程序和新的Delphi 64位编译程序编译出来的EXE大小是一样的, 但是如果是由MSBuild启动新的Delphi 64位编译程序编译的话会产生一个额外的MSBuild编译档案XXXX.cmds, 有兴趣的话您可以看看其中使用的编译选项:

如果再一步检查由原本的Delphi 64位编译程序和新的Delphi 64位编译程序编译出来的EXE内容, 那么从下图中可以到编译出来的内容几乎是一模一样, 这也代表在优化方面这2个编译程序是没有差别的:

那么这2个Delphi 64位编译程序到底有什么不同? 有, 那就是原本的Delphi 64位编译程序是一个32位应用程序, 如下图所示:

而新的Delphi 64位编译程序则是一个标准的64位编译程序如下图所示:

所以Embarcadero提供这2个类似的Delphi 64位编译程序主要目的是为了提供编译更大型项目的需求, 例如有一些使用者的项目已经拥有数千万行的程序代码, 已经大到原本的Delphi 64位编译程序无法编译的地步, 因为它是一个32位应用程序,能使用的内存有限度.
1、而新的Delphi 64位编译程序是一个64位应用程序, 它可以轻松的编译数千万行程序代码的项目. 所以新的Delphi 64位编译程序的推出是为了编译超大型的项目.
因此如果您的项目没有这么庞大, 那么您可以安心的使用原本的Delphi 64位编译程序, 因为在产生EXE和程序代码优化方面, 这2者没有任何的差别.
Cheers!
Embarcadero大中华区技术总监——李维