paip.提升性能---string split

paip.提升性能---string split

大概一万次就能看到慢的兰..
/////split 慢的原因。因为使用了正则表达式的,这样,就慢的了..

作者Attilax  艾龙,  EMAIL:1466519819@qq.com
来源:attilax的专栏
地址:http://blog.csdn.net/attilax

String.split(regex)事实上简单的调用了Pattern.compile(regex).split(this, limit),且每次compile()都会返回一个新Pattern。所以如果频繁调用split的话,最好创建单个Pattern实例并重复使用来取代split()。

 因此,如果你调用String.split非常频繁的话,每次都重新编译正则表达式的代价很高,性能会受到很大影响,此时最好自己预编译Pattern,再调用Pattern.split方法为妙。

解决:
1.预编译Pattern
 因此,如果你调用String.split非常频繁的话,每次都重新编译正则表达式的代价很高,性能会受到很大影响,此时最好自己预编译Pattern,再调用Pattern.split方法为妙。
String []items=line.split(" ");

//替代为

static Pattern pattern=Pattern.compile(" ");



String []items=pattern.split(line,0);


2.stringtoken

3.自定义分割算法
string tmp=orgSTr;
while(true)
{
  string splitstr=null;
  int j=tmp.indexof(',');
  if(j<0)break;
  splitstr=tmp.substring(0,j);
  tmp=tmp.substring(j+1);

}
 
 
 ///结果比较:
 splite 3600ms,stringtoken 2600ms, indexof 600ms..
 性能提升6倍之多阿..
 
 stringbuilder sb=new xx(99999);//预先顶好容量..
  时间是默认的1/3..提升3倍..

原文地址:https://www.cnblogs.com/attilax/p/5964152.html