java效能優化方案2——避免使用正規表示式
2、避免使用正規表示式
正規表示式給人的印象是快捷簡便。但是在 N.O.P.E 分支中使用正規表示式將是最糟糕的決定。如果萬不得已非要在計算密集型程式碼中使用正規表示式的話,至少要將 Pattern 快取下來,避免反覆編譯Pattern。
static final Pattern HEAVY_REGEX =
Pattern.compile("(((X)*Y)*Z)*");
如果僅使用到了如下這樣簡單的正規表示式的話:
1 String[] parts = ipAddress.split(“.”);
這是最好還是用普通的 char[] 陣列或者是基於索引的操作。比如下面這段可讀性比較差的程式碼其實起到了相同的作用。
int length = ipAddress.length();
int offset = 0;
int part = 0;
for (int i = 0; i < length; i++) {
if (i == length - 1 ||
ipAddress.charAt(i + 1) == `.`) {
parts[part] =
ipAddress.substring(offset, i + 1);
part++;
offset = i + 2;
}
}
上面的程式碼同時表明了過早的優化是沒有意義的。雖然與 split() 方法相比較,這段程式碼的可維護性比較差。
挑戰:聰明的小夥伴能想出更快的演算法嗎?
小結
正規表示式是十分有用,但是在使用時也要付出代價。尤其是在 N.O.P.E 分支深處時,要不惜一切程式碼避免使用正規表示式。還要小心各種使用到正規表示式的JDK字串方法,比如 String.replaceAll() 或 String.split()。可以選擇用比較流行的開發庫,比如 Apache Commons Lang 來進行字串操作。
相關文章
- 正規表示式效能優化的探究優化
- java正規表示式Java
- 【java】正規表示式Java
- 正規表示式(java)Java
- JavaScript正規表示式(2)JavaScript
- oracle 正規表示式2Oracle
- 正規表示式在Java中的使用Java
- 在JAVA中使用正規表示式 (轉)Java
- Java常用正規表示式Java
- java正規表示式【大全】Java
- java中的正規表示式Java
- Java正規表示式總結Java
- java正規表示式大全(常用)Java
- java正規表示式之 groupJava
- java 正規表示式 舉例Java
- Java 金額正規表示式Java
- Java 正規表示式詳解Java
- Java正規表示式應用Java
- java正規表示式替換Java
- java正規表示式例項Java
- 學習Java:正規表示式Java
- 正規表示式匹配${key}並在Java中使用Java
- iOS-正規表示式使用iOS
- 《前端竹節》(2)【正規表示式】前端
- Java 正規表示式——捕獲組Java
- Java 正規表示式例項操作Java
- Java017-正規表示式Java
- 正規表示式(程式碼java版)Java
- Java 中 Emoji 的正規表示式Java
- 常用正規表示式匹配模式(java)模式Java
- JAVA正規表示式語法大全Java
- java效能優化方案——使用entrySet()Java優化
- 正規表示式
- ios使用常用正規表示式—NSPredicateiOS
- JS正規表示式使用詳解JS
- 正規表示式使用詳解(轉)
- 在UltraEdit中使用正規表示式
- python筆記(2) 正規表示式Python筆記