我目前正在迭代7000到10000個文本定義,大小在0到5000個字符之間變化,我想檢查某個字符串是否存在於他們。我想在5000個不同的字符串定義區域中的某處進行此操作。檢查大量文件中是否存在字符串的最快方法
在大多數情況下,我只是想知道一個確切的不區分大小寫的匹配,但有時需要更正確地使用正則表達式。我想知道,當不需要正則表達式時,是否會更快地使用另一種「搜索」技術。
代碼的瘦身版本看起來像這樣。
foreach (string find in stringsiWantToFind)
{
Regex rx = new Regex(find, RegexOptions.IgnoreCase);
foreach (String s in listOfText)
if (rx.IsMatch(s))
find.FoundIn(s);
}
我已經讀了一下,看看我是否缺少任何明顯的東西。有很多關於使用Compliled正則表達式的建議,但是我不明白這對於正則表達式的「動態」性質是有幫助的。
我還在CodeProject上閱讀了一個有趣的article,所以我只是想看看使用「FastIndexOf」來了解它在性能上的比較。
我只是想知道是否有人對此類問題有任何建議,以及性能如何優化?
感謝
「編譯」版本將用於每個比較。如果你有10,000個文件(不清楚你的問題),它將被編譯一個並重新使用10K次而不是解釋10K次。 真的建議您將文本索引留給您購買的包。 – 2010-02-15 18:48:00
如果搜索字詞在運行時間之前不知道,該如何編譯? – MrEdmundo 2010-02-15 18:52:43
在這裏使用正則表達式是一個好主意,因爲.Net實現將使用Boyer-Moore搜索算法處理比IndexOf()快得多的簡單情況。 – Gabe 2010-02-15 19:05:59