Delphi XE2的FastString替代方案

5
当我一段时间前提出这个问题时,FastString单元解决了我的问题。
现在,我开始将我的软件从D7迁移到XE2。 我的问题是,由于FastString似乎不能再解决这个问题,我现在有什么替代选择?
或者,更乐观地说,Delphi本身是否解决了这些性能问题?

1
我们是过早地进行优化了吗? ;) - 等到你确实确定有问题时再来这里,提出具体的问题,人们很可能能够帮助你。 - 500 - Internal Server Error
嗨。不完全是这样。如果您查看我的参考问题,您会发现我确实有这个问题。我正在尝试减少迁移时可能遇到的问题。 - Ricardo Acras
我知道你现在已经明白了(如果没有FastString的话),但我的观点是XE2上的指标可能完全不同。 - 500 - Internal Server Error
很多FastCode的东西在最近版本中被整合到了VCL中。你可能不再需要任何外部的东西了。我建议先尝试使用本地的Delphi RTL代码,然后再考虑找其他的东西。你可能正在寻找一个已经不存在的问题的解决方案。 - Ken White
-1. 太过模糊。当你提到“这些性能问题”时,你具体指的是哪些问题?你唯一给出的描述就是某些事情花费了“太长时间”。你有测试用例吗?测量数据?任何表明需要多快才能满足这个问题的迹象? - Rob Kennedy
4
有趣的是,StackOverflow有时候会存在歧义。我曾经发过一个问题,它得到了7个赞同和一致的回答。但当我问了一个关于Delphi不同版本的相同问题后,却收到了2个反对票并被认为过于含糊不清。 - Ricardo Acras
2个回答

6

最近的Delphi已经包含了许多FastCode例程,因此您可能不再需要第三方库。
尝试使用原始RTL/VCL,然后查看是否仍有问题,并找到在新环境中解决问题的最佳解决方案。


2
这真的是一个答案吗?它没有提供任何解决方案;在我看来,它更像是对原始问题的评论。 - Ken White
@KenWhite - 我认为这是一个有效的答案 +1。弗朗索瓦说要先看看他是否有问题再继续。我个人讨厌当我问问题时,所有人都只是评论。我想要答案! - lkessler
@lkessler:我没有给它点踩,但我不认为它符合作为一个答案的条件。 :) - Ken White
1
@KenWhite,重述答案:XE2的FastString替代方案就是XE2本身。 - Uwe Raabe
我认为这是一个答案,因为在我的问题中,我问XE本身是否解决了性能问题。 - Ricardo Acras

3
我关注Unicode对Delphi中著名的字符串性能(FastStrings提升到极致)的影响,因此在2009年发布后不久,我进行了一系列比较基准测试,比较了Delphi 7、2007和2009,其中包括一些FastStrings比较。
结论是,尽管RTL已经看到了一些重大改进,消除了对FastStrings的需求,但是在Delphi 2009+花园中,如果您简单而幼稚地假设一切都很好,那么仍然存在一些潜在的“陷阱”等着抓住您。
最终,Unicode的开销会吞噬掉2009+的许多收益(这不是FastStrings可以解决的问题,因为FastStrings中的许多提升都依赖于ANSI字符串的可靠属性,而这些属性并不适用于Unicode)。
值得注意的是,自那时以来,我没有重新访问过这些测试,现在考虑到Delphi 2010、XE和XE2,重复这个练习可能会很有趣,以查看是否在这些版本中做出了进一步的改进。

一旦我完成了Smoketest框架的准备工作,我可能会担任这项任务——这是我最初用来进行测试的方法——以提供一个示例。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接