快速获取Java输入

时间:2012-02-10 00:20:13

标签: java input

我试图在Interview Street上遇到问题,我的问题与算法无关,而是与 Java 有关。对于挑战,需要从 System.in 中获取大量的输入行(数十万)。每行都有两个或三个令牌的预期模式,因此无需进行任何验证或解析(使 Scanner 无效)。我自己的算法是正确的,占整个运行时间的一小部分(范围为5%-20%,具体取决于边缘情况)。

进行一些研究和测试我发现,对于这个问题, BufferedReader 类比 Scanner 类明显快于获取此问题的输入数据。但是, BufferedReader 仍然不够快,无法应对挑战。任何人都可以指点我的文章或API,我可以研究一种更好的输入方式吗?

如果重要的是我通过调用readLine()方法和 String split()方法来分隔标记,那么我正在使用 BufferedReader

3 个答案:

答案 0 :(得分:1)

没有任何有用的信息,我能做的最好的就是提供一个通用的答案:http://java.sun.com/developer/technicalArticles/Programming/PerfTuning/

答案 1 :(得分:0)

我能想到一些事情(从头到尾):

  1. 尝试创建自己的阅读器,甚至忘记在不需要时转换为字符;
  2. 读入整个块,而不仅仅是行
  3. 尝试优化缓冲区大小;
  4. 自己走过字符或字节,试图找到令牌
  5. 优化编译器输出
  6. 预编译您的课程以便快速启动
  7. 使用分析器检查代码中的慢点
  8. 使用你的大脑并开箱即用。

答案 2 :(得分:0)