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

Joh*_*now 3 java file

谁能解释为什么会这样?文件大小最多为2MB.执行代码所需的时间不到2秒.

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

但是当我将代码更改为:

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

我知道这需要相对更多的时间,但需要470秒的大量时间.为何如此区别?

ζ--*_*ζ-- 6

temp =temp + line;
Run Code Online (Sandbox Code Playgroud)

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

用它创建一次

StringBuilder sb=new StringBuilder()
Run Code Online (Sandbox Code Playgroud)

并追加:

sb.append(line);
Run Code Online (Sandbox Code Playgroud)

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

  • 在大多数情况下,首选`StringBuilder`而不是`StringBuffer`. (3认同)