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张图片

如下为测试程序:

package sparsetest;

import org.apache.commons.lang3.StringUtils;

public class Test {

	public static void main(String[] args) {
		int N = 10000;
		StringBuilder sb = new StringBuilder();
		for (int i = 0; i < N; i++) {
			sb.append("0.0 ");
		}
		String s = sb.toString();
		long startTime = System.currentTimeMillis(); //获取开始时间
		for (int i = 0; i < 1000; i++) {
			String[] cS = s.split(" ");
		}
		long endTime = System.currentTimeMillis(); //获取结束时间
		System.out.println("split耗时:" + (endTime - startTime) + "ms"); 
		long startTime1 = System.currentTimeMillis(); 
		for (int i = 0; i < 1000; i++) {
			String[] cS1 =  StringUtils.split(s," ");	
		}
		long endTime1 = System.currentTimeMillis(); 
		System.out.println("StringUtils split耗时:" + (endTime1 - startTime1) + "ms");
	}

}

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

Java中String.split和StringUtils.split性能比较_第2张图片

你可能感兴趣的:(Java中String.split和StringUtils.split性能比较)