为什么只读一个小文件需要这么长时间?

时间:2010-08-28 21:55:23

标签: java performance file-io

我正在做一个看起来像是从数据文件中读取的简单内容,而且它正在fr fr fr。 (而且,我的意思是300毫秒。)这是有问题的代码:

BufferedReader f = new BufferedReader(new FileReader("input.txt"));
StringTokenizer st = new StringTokenizer(f.readLine());
int var1 = Integer.parseInt(st.nextToken())
int var2 = Integer.parseInt(st.nextToken());
Integer[][] people = new Integer[var1][];
for(int i = 0; i < var2; i++)
    f.readLine();
for(Integer i = 0; i < var1; i++)
{
    StringTokenizer line = new StringTokenizer(f.readLine(), " \t\n\r\f,");
    line.nextToken();
    Integer[] list = new Integer[line.countTokens()];
    for(int j = 0; j < drinks.length; j++)
        list[j] = Integer.parseInt(line.nextToken());
    people[i] = list;
}

这是相关的time输出:

sammysmbp:fridgemadness_lean sfishman$ time java fridgemadness

real    0m0.311s
user    0m0.277s
sys  0m0.056s

只是我还是真的,真的很慢。在这个例子中,它仅通过51行输入。

2 个答案:

答案 0 :(得分:4)

只是猜测,但可能很多时候只是用于启动jvm。

在相关代码之前和之后打印时间戳。如果我的猜测是正确的,那么服务请求的小服务器可能有助于消除启动时间。

答案 1 :(得分:1)

模式中不需要\ r或\ n,readLine()已经删除了它们。

除了JVM启动之外,如果文件很长,大部分时间都将用于读取到所需位置。也许行的文本文件不是正确的数据结构。