【问题标题】:Delphi XE - faster alternative to System.Pos functionDelphi XE - System.Pos 函数的更快替代方案
【发布时间】:2012-10-01 12:36:17
【问题描述】:

我知道许多来自 FastStrings 的代码已包含在 Delphi XE 中。我需要处理数千个文件并进行一些文本处理。 System.Pos 例程是否有“更快”的替代方案?

【问题讨论】:

  • 澳洲联储:取决于您搜索的内容。您可以搜索字符、子字符串或任何子字符串数组。那些会给你不同的算法。它还可能取决于您是否需要位置或检查字符串中是否存在/丢失符号(或一组符号)。普通字符搜索只是线性扫描。子字符串搜索应该在不成功匹配后跳过部分字符串,从而获得加速(我不记得这个优化归因于的名称,但这是相当明显的想法)
  • 基本上,如果你真的有速度关键的方式,你最好看看更大的图,想想 Pos 功能是否符合你的需求,或者你在滥用它。

标签: delphi delphi-xe delphi-xe3


【解决方案1】:

是的。 PosEx function is from FastCode 与 System.Pos 相比要快得多。它位于StrUtils单元。

【讨论】:

  • 如果 PosEx 比 System.Pos 快得多,你如何解释这个实现:Result := System.Pos(SubStr, S, Offset);
  • @UweRaabe - 所以他们降级了它,或者改变了System.Pos 并把PosEx 变成了一个包装器?我没有 XE2 来检查自己。
  • @LeonardoHerrera,实际上它在 XE3 中(当您打开多个 IDE 时,您真的会感到困惑)。在 XE3 中,System.Pos 来自 FastCode(至少对于 32 位)。
猜你喜欢
  • 2014-07-19
  • 2017-07-10
  • 2018-12-11
  • 2012-07-05
  • 2012-01-23
  • 2013-07-13
  • 2011-02-27
  • 2010-09-22
相关资源
最近更新 更多