zoukankan      html  css  js  c++  java
  • 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倍..

  • 相关阅读:
    基于SPA的网页授权流程(微信OAuth2)
    用CSS3制作尖角标签按钮样式
    关于WebAPI跨域踩到的一点坑
    .net webapi跨域方法整理
    使用 JavaScript 截屏
    关于anguar2微信支付问题
    sql操作语句
    mysql5.7初始化密码报错 ERROR 1820 (HY000): You must reset your password using ALTER USER statement before
    linux上安装mysql5.7
    git 常用命令
  • 原文地址:https://www.cnblogs.com/attilax/p/15199395.html
Copyright © 2011-2022 走看看