Delphi XE是否比Delphi 2007生成更快的代码?

时间:2011-06-16 12:44:37

标签: delphi optimization delphi-xe

我主要使用Delphi 2007来处理那些不需要Unicode的项目。

最近我一直在想Delphi XE因为

  • 每个人都赞美它;
  • 内置SVN支持

我很想知道,编译器中是否有任何增强功能使Delphi XE生成比Delphi 2007更快的代码,我在谈论类似的事情:

  • 更好地消除死代码(delphi 2007是不错的,但不会消除100%的死代码)
  • 循环展开(ala C&#O3优化级别)
  • 自动内联短程序
  • 多线程代码的开销减少。

编辑

在此页面上:http://www.embarcadero.com/products/delphi/whats-new

它列出:Improved compiler performance 究竟是什么改进了?

5 个答案:

答案 0 :(得分:15)

答案 1 :(得分:9)

我对Delphi XE编译器的非正式测试表明,在涉及使用泛型的许多情况下代码生成明显更正确,并且在Delphi 2009,2010时代困扰编译器的某些编译器内部故障(错误) ,现在已经修好了。在许多情况下,在IDE中重复重建时,使用泛型链接到包中的Delphi 2010代码会在编译和链接期间导致损坏的DCP文件输出或神秘的编译器内部错误。

我会写在发行说明中,如果是我,“我们修复了错误”。 (我收回了“有史以来最好的”这句话,因为看起来人们认为我把它当作我当时雇主的广告,我以前曾在Embarcadero工作过。)我想所有这些都已经过去了在“性能”这个词中,性能被理解为“正确性”,“可靠地完成工作,没有毛刺”。

关于速度,我没有注意到Delphi 2009,2010或XE的性能分析代码在性能和运行时速度方面存在统计上的显着差异,也没有注意到编译器在“构建项目”方面的性能更快”。

由于您询问了Delphi 2007,您应该知道存在巨大的类型更改(String = AnsiString,String = UnicodeString)。对于相同的代码,有些东西会变慢,有些东西会更快,而且如果你在2010年重新编译你的代码而不知道很多关于代码的话,那么100%不可能说出会发生什么。如果您之前非常依赖WideString,并且现在可以使用UnicodeString,那么您的代码将变得更快,因为UnicodeString性能远远优于WideString性能。一些delphi程序在你的代码中花费大量时间(在几乎不可见的情况下)将你的ansi数据转换为unicode数据,内部在win32中,例如当你使用Memo公共控件时。另一方面,过去使用字节大小字符串的一些东西现在将使用字大小的字符串,因此在某些地方内存使用量会增加,而某些操作可能会变慢。对于正确移植的代码,最有可能的最终结果(如果你在2007年编写它们,你必须对大多数应用程序进行一些更改才能使它们在XE中构建),“原始性能”的净减少很小。

然而,Delphi XE在IDE中一次又一次地构建项目,更重要的是重建和重建,并且不会发生任何事故,也不会在我身上崩溃。德尔福2007一直在崩溃。 Delphi 2007还有数百个恼人的编译器错误,这些错误会让我发疯。编译代码速度甚至不是升级的主要原因,可靠性是。

通常在我一直在使用的大型项目中,Delphi 2007,2009和2010会在某些复杂软件包的第二次或第三次重建时崩溃。在2009年和2010年,大量使用泛型的软件包特别容易导致IDE崩溃。 XE是稳定的,即使我使用繁重的泛型代码也是如此,这是发布说明可能正在谈论的一种“性能”改进。我称之为“错误修复”。让我们直言不讳。

(删除最后一段,因为人们认为这是广告)

答案 2 :(得分:5)

我没有看到任何证据表明代码生成有任何重大改进。我不知道自Delphi 5以来在代码生成改进方面有一些非常重要的事实。事实上,我从未发现我的代码在升级后运行得更快,并且可以追溯到Delphi 2。

答案 3 :(得分:3)

Delphi编译器今天已经过时,正在被重写。 XE的改进看起来微不足道,编译器实际上无法利用最新的处理器功能和指令集(它主要停留在80386时代,但对于一些使用手写汇编程序来利用的RTL代码更现代化的能力)。 XE编译器可能比以前的版本更可靠(因为D7质量变得非常可变),但总体性能改进需要对编译器进行全面改造才能将其带入二十一世纪。 已经进行了,但不知道下一个版本是否只有一个较新的64位编译器,仍然是旧的32位编译器,或者32位编译器是否也有新的代码库。

答案 4 :(得分:2)

这是embaracadero

的链接

http://www.embarcadero.com/products/delphi/whats-new

中页面的缩写
  

“语言,编译器和库   增强“

他们提到了编译器的改进。这里不多,但他们不说的也是你的答案。那就是如果他们有任何重大的东西,他们可能会吹嘘它。