Java中String.split和StringUtils.split性能比较

释放双眼,带上耳机,听听看~!

问题背景

最近,在处理高维数组的运算时,需要从txt中读取文本,并使用split()函数将每一个行的文本转化成数组。如下所示:

1.0 0.0 0.0 0.0 0.0 0.0 0.0 …

由于该数组的维度高,最开始直接使用的是String.split()函数做处理,但运行速度过慢。后面,使用StringUtils.split()函数做替代。

下面来比较这一些函数的效率。

效率比较

StringUtils.split()来自于Apache Commons Lang库,可通过下面的网址下载:

https://mvnrepository.com/artifact/org.apache.commons/commons-lang3/3.10

Java中String.split和StringUtils.split性能比较

如下为测试程序:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1package sparsetest;
2
3import org.apache.commons.lang3.StringUtils;
4
5public class Test {
6
7   public static void main(String[] args) {
8       int N = 10000;
9       StringBuilder sb = new StringBuilder();
10      for (int i = 0; i < N; i++) {
11          sb.append("0.0 ");
12      }
13      String s = sb.toString();
14      long startTime = System.currentTimeMillis(); //获取开始时间
15      for (int i = 0; i < 1000; i++) {
16          String[] cS = s.split(" ");
17      }
18      long endTime = System.currentTimeMillis(); //获取结束时间
19      System.out.println("split耗时:" + (endTime - startTime) + "ms");
20      long startTime1 = System.currentTimeMillis();
21      for (int i = 0; i < 1000; i++) {
22          String[] cS1 =  StringUtils.split(s," ");
23      }
24      long endTime1 = System.currentTimeMillis();
25      System.out.println("StringUtils split耗时:" + (endTime1 - startTime1) + "ms");
26  }
27
28}
29
30
31

执行该程序控制台输出结果为:

Java中String.split和StringUtils.split性能比较

给TA打赏
共{{data.count}}人
人已打赏
安全技术

详解Node.js API系列C/C++ Addons(1) API文档

2021-12-21 16:36:11

安全技术

从零搭建自己的SpringBoot后台框架(二十三)

2022-1-12 12:36:11

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索