【发布时间】:2012-03-22 03:56:20
【问题描述】:
我有这个文本文件,其中包含一个单词列表和一堆与每个单词相关的分数。我想从文件中读取单词和单词并在我的项目中使用它们。代码是 Java 的,文件本身大约 13MB。当我尝试读取文件时,大约需要 15 分钟才能完成,有时甚至更长时间。关于我应该如何从头开始优化或解决这个问题的任何想法。
对文件执行的操作是 - 1. 阅读每一行(平均大约 50 个字符) 2. 使用单个空格拆分成标记(平均情况下大约 10 个标记) 3.将生成的token存储在一个数组中(此阶段仅此而已)
编辑:很抱歉之前没有发布我的代码,这只是我的想法。 http://pastie.org/3646388 那里有一条线,我循环到 10000 个值,这是为了查看是否有任何输出,而不是循环到 EOF。
【问题讨论】:
-
你能分享你的代码吗?可能会有一些优化。
-
如果你在 commodore 64 上运行它或者你的代码有问题……我们看不到。
-
是的,如上所述,更多的代码是有帮助的,但是即使在现在的 PC 上,读取 13MB 文件 15 分钟也非常慢。我不认为文件操作是这里的瓶颈。我的建议: 1. 如果第 2 步,哪个拆分令牌使用的 CPU 比预期的多?如果是这样,优化那里的代码; 2、如果第3步需要大量的内存分配操作,先分配一个足够大的数组(或者ArrayList?),然后调JVM有更大的启动堆。
-
首先,我建议您分析您的代码并确定它在哪里花费时间。这是引导您朝着正确方向努力的最佳方式。
-
在高速 PC 上,您应该能够使用 BufferedReader 以 90 MB/s 的速率读取文件。大约需要 0.3 到 0.6 秒。
标签: java file optimization nlp tokenize