【问题标题】:FastString Alternatives to Delphi XE2Delphi XE2 的 FastString 替代品
【发布时间】:2012-01-30 23:51:02
【问题描述】:

当我前一阵子问this question时,FastString单元来解决我的问题。

现在我开始将我的软件从 D7 迁移到 XE2。我的问题是,既然 FastString 似乎不再解决问题,我现在有什么替代方案?

...或者,更乐观地说,Delphi 本身是否解决了这个性能问题?

【问题讨论】:

  • 过早优化,是吗? ;) - 等到您可以真正确定您有问题。然后带着具体问题回到这里,人们很可能会提供帮助。
  • 嗨。不完全的。如果您看到我提到的问题,您可以看到我确实有这个问题。我正在努力减少迁移时可能遇到的问题。
  • 我知道您现在拥有它(或者如果不是 FastString 就会拥有它),但我的意思是 XE2 上的指标可能完全不同。
  • 在最近的版本中,很多 FastCode 的东西都被合并到了 VCL 中。你可能不再需要任何外部的东西了。我建议先尝试本机 Delphi RTL 代码,然后担心以后会发现其他任何东西。您可能正在寻找不再存在的问题的解决方案。
  • 有趣的是,StackOverflow 有时是如何模棱两可的。我问了最初的问题,得到了 7 个赞成票和一致的回答。我问了同样的问题,但是问了一个不同版本的 Delphi,得到了 2 票反对,突然变得太模糊了。

标签: delphi delphi-7 delphi-xe2


【解决方案1】:

最近的 Delphi 中包含了许多 FastCode 例程,因此您可能不再需要 3rd 方库。
尝试使用现有的 RTL/VCL,然后看看您是否仍有问题,以及在新环境中解决问题的最佳解决方案是什么。

【讨论】:

  • 这真的是一个答案吗?它不提供任何解决方案;在我看来,这更像是对原始问题的评论。
  • @KenWhite - 我认为这是一个有效的答案 +1。弗朗索瓦说该怎么做:在继续之前先看看他是否有问题。我个人讨厌当我问一个问题而人们所做的只是评论时。我想要答案!
  • @lkessler:我没有投反对票,但我不认为它有资格作为答案。 :)
  • @KenWhite,改写答案:XE2 的 FastString 的替代品只是 XE2。
  • 我认为这是一个答案,因为在我的问题中我询问 XE 本身是否解决了性能问题。
【解决方案2】:

由于担心 Unicode 对 Delphi 中著名的出色字符串性能(FastStrings 提升到一个极端水平)的影响,我在 2009 年发布后不久进行了a series of comparative benchmarking tests comparing Delphi 7, 2007, and 2009,这些测试包括一些 FastStrings 比较。

结论是,尽管事实上是的,RTL 已经看到了一些显着的改进,从而否定了对 FastStrings 的需求,但是(或者,在 Delphi 2009 时)有一些潜在的“陷阱”等着你如果您简单天真地假设一切都是甜蜜的,就像在 Delphi 2009+ 花园中一样。

最终,Unicode 的开销吞噬了 2009+ 的大部分收益(这不是 FastStrings 可以解决的问题,因为 FastStrings 中的许多提升都依赖于 ANSI 字符串的可靠人工制品,特别是不适用于 Unicode)。

值得注意的是,从那以后我没有重新访问这些测试,现在重复练习可能会很有趣,考虑到 Delphi 2010、XE 和 XE2,看看这些版本中是否有任何进一步的改进。

通过提供示例,一旦我完成了 Smoketest 框架的准备工作(我最初用于进行测试)以进行发布,我就可以进行此操作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-08
    • 2012-05-19
    • 2011-12-26
    相关资源
    最近更新 更多