文件读取期间执行速度差异很大

时间:2013-07-10 15:51:18

标签: java file

任何人都可以解释为什么会这样吗?文件大小最多为2MB。代码执行时间不到2秒。

try {
    while ((line = br.readLine()) != null) {
        System.out.println(line);
}
catch(Exception e)
{           
}

但是当我将代码更改为:

String temp = "";
try {
    while ((line = br.readLine()) != null) {
        temp =temp + line;
}
catch(Exception e)
{
}

我知道这需要相对更多的时间,但需要470秒的大量时间。为什么会出现这种差异?

2 个答案:

答案 0 :(得分:6)

temp =temp + line;

字符串的串联是什么。连接需要创建一个新的字符串对象,并且可能需要实习,这需要花费很多时间。相反,考虑在大多数情况下使用StringBuilder或需要同步的StringBuffer。

使用

创建一次
StringBuilder sb=new StringBuilder()

并追加:

sb.append(line);

然后,您可以使用sb.toString()抓取数据。

答案 1 :(得分:1)

在Java中,字符串是不可变的。所以这句话:

temp =temp + line;

为文件中的每一行创建一个新的字符串对象,这会减慢速度。一些更好的替代方案包括StringBuilderStringBuffer

您可以找到一些基准here来比较这3种串联字符串的速度。