Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么仅仅读取一个小文件就要花这么长时间?_Java_Performance_File Io - Fatal编程技术网

Java 为什么仅仅读取一个小文件就要花这么长时间?

Java 为什么仅仅读取一个小文件就要花这么长时间?,java,performance,file-io,Java,Performance,File Io,我正在做一件看起来像是从一个数据文件中简单读取的事情,而且这件事一直在进行。(我指的是300毫秒)这就是所讨论的代码: BufferedReader f = new BufferedReader(new FileReader("input.txt")); StringTokenizer st = new StringTokenizer(f.readLine()); int var1 = Integer.parseInt(st.nextToken()) int var2 = Integer.par

我正在做一件看起来像是从一个数据文件中简单读取的事情,而且这件事一直在进行。(我指的是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;
}

是我还是真的,真的很慢。在本例中,它只需要51行输入。

只是猜测,但可能很多时间都被用于jvm的启动


在相关代码前后打印时间戳。如果我的猜测是正确的,一点服务器接收请求可能有助于减少启动时间。

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


撇开JVM启动不谈,如果文件很长,大部分时间都会花在读取到所需位置上。可能行的文本文件不是正确的数据结构。

这取决于输入文件。它有多大?@dark_charlie“51行输入”您是否尝试过在应用程序中测量时间?那么您将忽略java运行时启动成本。“java版本”在我的机器上需要0.1秒。@Michael,这些行可能会很长…@Bart K.@dark_charlie,这些行相当短。每个大约30个字符。谢谢。只需在程序本身中计时,就可以在1ms内完成。所有其他时间显然都花在了系统中。
sammysmbp:fridgemadness_lean sfishman$ time java fridgemadness

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