Java 为什么仅仅读取一个小文件就要花这么长时间?
我正在做一件看起来像是从一个数据文件中简单读取的事情,而且这件事一直在进行。(我指的是300毫秒)这就是所讨论的代码: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
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