一时兴起想要比较一下效率如何,也顺便贴上代码。
总体而言,无论是驼峰转下划线还是下划线转驼峰,一般而言都不会超过5个毫秒,但是这个功能毕竟简单,积少成多之下,也会显得有些慢。鉴于毫秒的精度不够,我采用纳秒来量化执行效率。
结论是:
1.在使用java自带的正则表达式工具Pattern和Matcher的情况下,耗时非常大,最少也要约300万纳秒约合3毫秒才能完成,而基于字符串split或者replace,一般只需要70万纳秒约合0.7毫秒。但是正则工具的代码结构逻辑简单,而基于字符串的拆分和替换操作看起来有较多for和if而有些混乱。
2.基于StringBuilder进行字符串append效率和基于String的字符串拼接,在当前场合下效率差距不大,多数情况下两者都有时间波动偶尔有较大波动,可能和执作的时候CPU时间片分配有关。
3.此后的执行时间从5万纳秒到4万纳秒递减,与第一次时间差距非常大,应该是字符串常量池此时起了作用。速度非常快。
4.综合而言,从下划线转化为驼峰,比较快的情况稳定在50w纳秒左右,而从驼峰转化为下划线,耗时大大减少,比较快的情况下不到10万纳秒,常量池其作用后,耗时不足1w纳秒,相当于几个微秒就完成了。
环境信息:I5-6300HQ,12GDDR3内存,win10家庭版。
代码如下:实践证明这种小功能测效率纯粹是闲的蛋疼……
package json.util;
import java.util.Arrays;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* Created by tm on 2016/11/24.
* time : 15:45
* project_name : code
*/
public class UnderLineString2Camel {
/**
* 下划线转驼峰
* @param underline
* @return
*/
public static String underline2Camel(String underline){
Pattern pattern = Pattern.compile("[_]\\w");
String camel = underline.toLowerCase();
Matcher matcher = pattern.matcher(camel);
while(matcher.find()){
String w = matcher.group().trim();
camel = camel.replace(w,w.toUpperCase().replace("_", ""));
}
return camel;
}
/**
* 驼峰转下划线
* @param camel
* @return
*/
public static String Camel2Underline(String camel){
Pattern pattern = Pattern.compile("[A-Z]");
Matcher matcher = pattern.matcher(camel);
while(matcher.find()){
String w =