我试图在Interview Street上遇到问题,我的问题与算法无关,而是与 Java 有关。对于挑战,需要从 System.in 中获取大量的输入行(数十万)。每行都有两个或三个令牌的预期模式,因此无需进行任何验证或解析(使 Scanner 无效)。我自己的算法是正确的,占整个运行时间的一小部分(范围为5%-20%,具体取决于边缘情况)。
进行一些研究和测试我发现,对于这个问题, BufferedReader 类比 Scanner 类明显快于获取此问题的输入数据。但是, BufferedReader 仍然不够快,无法应对挑战。任何人都可以指点我的文章或API,我可以研究一种更好的输入方式吗?
如果重要的是我通过调用readLine()方法和 String split()方法来分隔标记,那么我正在使用 BufferedReader 。
答案 0 :(得分:1)
没有任何有用的信息,我能做的最好的就是提供一个通用的答案:http://java.sun.com/developer/technicalArticles/Programming/PerfTuning/
答案 1 :(得分:0)
我能想到一些事情(从头到尾):
使用你的大脑并开箱即用。
答案 2 :(得分:0)
BufferedDataInputStream应该比BufferedReader更快。
你可以在这里找到罐子:http://www.jarvana.com/jarvana/view/org/apache/tika/tika-app/0.8/tika-app-0.8.jar!/nom/tam/util/BufferedDataInputStream.class?classDetails=ok。
javadoc http://skyview.gsfc.nasa.gov/jar/javadocs/nom/tam/util/BufferedDataInputStream.html。
这是该项目的一部分http://skyview.gsfc.nasa.gov/help/skyviewjava.html。
请注意,我从未测试过这个......