2012-10-01 121 views
4

我知道很多來自FastStrings的代碼已經包含在Delphi XE中。我需要處理幾千個文件並進行一些文本處理。有沒有更快的替代System.Pos例程?Delphi XE - 更快的替代System.Pos功能

+0

澳大利亞央行:取決於你在尋找什麼。 您可以搜索字符,子字符串或任何子字符串數組。 那些會給你不同的算法。 它也可能取決於你是否需要一個位置或檢查符號(或一組符號)是否存在/錯過字符串。 純字符搜索只是線性掃描。 子串搜索在unsuccesfull匹配後應該跳過字符串的部分,從而獲得加速(我不記得這個優化歸因於的名稱,但它是相當明顯的想法) –

+0

基本上,如果你真的有速度批判的方式,你最好看看更大的圖片,並認爲如果Pos功能符合您的需求或您濫用它。 –

回答

6

是的。 PosEx function is from FastCode,與System.Pos相比要快得多。它位於StrUtils單位。

+0

如果PosEx比System.Pos快得多,你如何解釋這個實現:'Result:= System.Pos(SubStr,S,Offset);' –

+0

對不起,這是XE2。 –

+0

@UweRaabe - 所以他們降級了,或者改變了'System.Pos',並且使'PosEx'成爲一個包裝?我沒有XE2來檢查我自己。 –