-1
我正在使用一個應用程序,它接收來自遊戲服務器的包含日誌的udp數據包,並使用它們收集有關服務器正在發生的事情的信息 - 它通過正則表達式匹配來完成此操作。然而,我遇到了一個問題,如果程序一次接收足夠的數據包,CPU使用率會稍微平靜一些 - 在查看線程轉儲之後,這似乎是由於正則表達式匹配。優化Java正則表達式匹配
這裏是兩個模式的示例:
Pattern pattern = Pattern.compile(".*World triggered \"Game_Over\" reason \"(.+)\"");
Pattern chatPattern = Pattern.compile("\"(.+)<([0-9]+)><\\[(U:[0-9]:[0-9]+)\\]><(Blue|Red)>\" say \"(.+)\"");
然後它基於所述模式和它給出的日誌行創建匹配器並檢查匹配。它每次接收數據包時都會爲5種不同模式執行此操作 - 我如何優化這個以降低CPU使用率?
爲了避免回溯,在所有'+'之後加一個'+'。 – 2014-10-07 10:53:58
@AvinashRaj - 請解釋。如何/爲什麼避免回溯? – 2014-10-07 11:06:01
http://www.regular-expressions.info/catastrophic.html – 2014-10-07 11:14:19