Delphi XE - System.Pos函数的更快替代方案

4

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


RBA:取决于您搜索的内容。您可以搜索字符、子字符串或任何子字符串数组。这些将给您不同的算法。这也可能取决于您是否需要位置或检查该符号(或一组符号)是否存在/缺失于字符串中。普通字符搜索只是线性扫描。子字符串搜索应跳过未成功匹配的字符串部分,从而获得加速(我不记得这种优化的名称,但这是一个相当明显的想法)。 - Arioch 'The
基本上,如果您真的需要速度关键的方式,您最好看看更大的图片,并思考Pos函数是否符合您的需求,或者您是否在错误地使用它。 - Arioch 'The
1个回答

6

如果PosEx比System.Pos快得多,那么你如何解释这个实现:Result := System.Pos(SubStr, S, Offset); - Uwe Raabe
@UweRaabe - 所以他们降级了它,还是改变了 System.Pos 并将 PosEx 变成了一个包装器?我没有 XE2 来自己检查。 - Leonardo Herrera
@LeonardoHerrera,实际上是在XE3中(当你打开多个IDE时很容易混淆)。在XE3中,System.Pos是来自FastCode的(至少对于32位)。 - Uwe Raabe

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