爲什麼格局Java的正則表達式或太慢
[0123]123456|98765
是執行[0123] 123456然後98765在Java中兩次慢?因此,單獨搜索它們比用OR執行要快。有人有解釋嗎?
UPD
見與結果檢驗例如: https://gist.github.com/cy6erGn0m/5077720
UPD2
我發現原因是內部java.util.regex中。下面的測試表明:https://gist.github.com/cy6erGn0m/5083426
所以你可以看到匹配器對源字符序列做出更多的請求。所以第一個模式比兩個獨立模式需要多出兩倍的源請求。
多行和不區分大小寫不相關。或運營商影響複雜性。
這是你的確切模式?你如何測試它? – Qtax 2013-03-03 16:32:27
在搜索字符串匹配的用例中,確實存在差異(儘管我的計算機速度並不慢)。 https://gist.github.com/anonymous/5076963關於ideone:http://ideone.com/447pPO – nhahtdh 2013-03-03 17:03:55
我的測試看起來像由nhahtdh提供。我的結果表明,第一種模式大約慢了2-3倍。在我自己的測試平均時間內:2700ms vs 950ms – 2013-03-03 19:09:43