方法名轉駝峯的比較

寫在前面

比較用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>

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章