寫在前面
比較用java 和guava兩種方式處理轉換效率
"get-element-by-id" 轉 getElementById
/**
* 調整count 和 x
*/
@Test
public void test1_java_VS_guava(){
int count = 100000;
StringBuilder sbSource = new StringBuilder();
for(int x=0; x<100; x++ ){
sbSource.append("g-e");
}
String s = sbSource.toString();
//java
long javaStart = System.currentTimeMillis();
for(int i=0; i<count; i++){
Pattern p = Pattern.compile("-(.)");
Matcher m = p.matcher(s);
StringBuffer sb = new StringBuffer();
while (m.find()) {
m.appendReplacement(sb, m.group(1).toUpperCase());
}
m.appendTail(sb);
String out = sb.toString();
//System.out.println(sb.toString());
}
long javaEnd = System.currentTimeMillis();
//guava
long guStart = System.currentTimeMillis();
for(int j=0; j<count; j++){
String out = CaseFormat.LOWER_HYPHEN.to(CaseFormat.LOWER_CAMEL, s);
//System.out.println(out);
}
long guEnd = System.currentTimeMillis();
System.out.println("---------------");
System.out.println("" + (javaEnd-javaStart));
System.out.println("" + (guEnd - guStart));
}
最後的結果統計:
說明
- 在執行次數少時,或者配置的內容少時,java的效率更高
- 當執行次數多時,或者匹配內容多時,guava效率高
- 在ge*100,ge*1000的場景中,執行次數由1萬到10萬時,java的執行時間卻沒有成倍的增加,很奇怪
pom
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>28.1-jre</version>
</dependency>
</dependencies>