近期笔者分析一段在线代码的性能时,发现Java String类中split()方法的性能和网上一些帖子的描述并不相同,是以记录澄清。

Java String split方法到底有没有使用正则表达式?

结论:
分隔符符合两种情况:(1) 单字符字符串,而且这个字符不是
正则表达式的元字符“$|()[{^?*+\\”。(2)两个字符字符串,第一个字符是反斜杠和第二个不是ascii数字或ascii字母。那么执行split方法不会使用正则表达式。其他情况下会使用正则表达式。
因此,显见地说,如果想要提高性能,分隔符的选择极其重要。最好使用单字符非正则表达式元字符,如英文逗号等。

StringUtils.split(string,char)效率是不是比JDK原生的高?

 结论:不一定,关键还是看分隔符的选择。


使用英文逗号“,”作为分隔符的情况:

使用英文"|"作为分隔符的情况:请注意箭头所指的耗时,比上一次测试用时更短,这是因为这次的分隔符在原字符串中不存在。

当使用数字1作为分隔符时,两种方法用时接近,而且随着原字符中和分隔符命中率增高,StringUtils的split方法用时明显在增加。

最后总结:

 1.jdk原生split方法性能很大程度上取决于分隔符的选择,如英文逗号,单个数字,单个字母,英文分号,英文冒号都能带来很好的性能表现。2.StringUtils的split的确在一些情况下,如分隔符在源字符串中不存在,分隔符属于正则表达式元字符等情况下,使用StringUtils的split会有更好的性能表现。3.但是,随着命中率增高StringUtils的split的性能曲线开始衰减,而jdk原生split方法则有比较稳定的表现。

Java String split方法性能分析相关推荐

  1. java String split 方法丢弃末尾的空白字符问题

    问题描述 在使用 split 方法时,末尾的空白字符会被丢弃,但是实际上这个行字符可能是一个文件的内容,没个字段内容是否为空都需要记录,此时 split的此无参数方法就不再适用了. 情景再现 Stri ...

  2. Java中split方法详细讲解

    1.split()方法介绍 语法: public String split(String regex) public String split(String regex, int limit) 参数: ...

  3. Java在使用时需要注意那些问题_java使用String.split方法时要注意的问题

    在使用String.split方法分隔字符串时,分隔符如果用到一些特殊字符,可能会得不到我们预期的结果. 我们看jdk doc中说明 public String[] split(String rege ...

  4. C#中判断空字符串的3种方法性能分析【月儿原创】

    C#中判断空字符串的3种方法性能分析 作者:清清月儿 主页:http://blog.csdn.net/21aspnet/           时间:2007.4.28  3种方法分别是:string ...

  5. Java String.split()用法小结

    2019独角兽企业重金招聘Python工程师标准>>> 在java.lang包中有String.split()方法,返回是一个数组 我在应用中用到一些,给大家总结一下,仅供大家参考: ...

  6. java string()函数_转载java String.split()函数的用法详解

    转载java String.split()函数的用法详解 如果您发现本文排版有问题,可以先点击下面的链接切换至老版进行查看!!!在java.lang包中有String.split()方法的原型是: p ...

  7. C#中判断空字符串的3种方法性能分析 1

    C#中判断空字符串的3种方法性能分析 作者:杨义贤 主页:http://blog.csdn.net/lucky_yyx       时间:2007.4.29  3种方法分别是:string a=&qu ...

  8. 软件性能测试分析与调优实践之路-Java应用程序的性能分析与调优-手稿节选

    Java编程语言自从诞生起,就成为了一门非常流行的编程语言,覆盖了互联网.安卓应用.后端应用.大数据等很多技术领域,因此Java应用程序的性能分析和调优也是一门非常重要的课题.Java应用程序的性能直 ...

  9. java中split方法 简单详细

    java中split方法 思考下列代码的执行结果 public static void main(String[] args) {// TODO Auto-generated method stubS ...

最新文章

  1. 游戏控制杆OUYA游戏开发快速入门教程
  2. Bag of Words(BOW)模型
  3. Xshell安装sql报错:······ RSA sha1 ((MD5) PGP) md5 NOT OK (MISSING KEYS: (MD5) PGP#3a79bd29)
  4. TypeScript 基础类型 1
  5. Arm开发板内核驱动模块--Helloworld及Makefile
  6. 【java基础知识】通过java实时查询数据库
  7. Linux学习笔记三:安装VMWare Tools共享文件夹
  8. word2vec的应用场景
  9. 从 阿西莫夫机器人三大定律 谈起
  10. oppok3如何刷机_OPPO K3 PCGM00刷机教程,卡刷升级更新官方固件系统包
  11. vs2017 安装Qt VS Tools ,新建项目没有Qt GUI Application选项 ,解决方法
  12. 【茗创科技】婴儿脑电机器学习实用指南
  13. app怎么调用mysql数据_教你如何拿别人APP中的数据
  14. 循序渐进理解RTFM算法
  15. 键盘的复制粘贴快捷键总是需要重复多次才起作用
  16. ASP.NET Web API与Owin OAuth:使用Access Toke调用受保护的API
  17. 福大软工1816 ·软工之404NoteFound团队选题报告
  18. 华为弹性云服务器组成,弹性云服务器知识大全-华为企业云服务
  19. 斐讯路扫地机器人怎么关机_斐讯扫地机怎么关_斐讯扫地机器人_斐讯扫地机怎么关机...
  20. 百度关键词质量度如何提高?9个质量度影响因素

热门文章

  1. 使用python-open3d读取pcd,bin格式的点云,并显示
  2. Git教程之Github,狐妖小红娘向,超易理解(六)——(Part3)邀请涂山苏苏加入涂山集团
  3. 市场营销是什么以及它的作用
  4. 基于MATLAB的数值微分与拟合多项式求导
  5. PNAS:土地利用和土地覆盖的变化决定了保护区的可持续性和影响
  6. 1.静态链接库的生成和使用
  7. 多行文本/文本溢出显现...
  8. 息县装修“黑白风格”
  9. java抽奖课程设计_java课程设计(题目:随机运动的彩色弹弹球)
  10. 接近客户的三十秒,决定了推销的成败