System.out.print很慢

时间:2013-03-11 01:55:50

标签: java optimization console

我有一个应用程序,它将文件的字节打印到系统控制台。 (cmd.exe,在我的情况下)它工作得很好,但我希望它更快(对于大文件),所以我优化了它。从我自己的测试中,它从文件中读取字节并将它们存储在char数组中的部分在250,000字节文件上需要15到32毫秒,但是将这些字符打印到命令窗口需要9000毫秒!(9秒,几乎慢了300倍!)我试过http://www.rgagnon.com/javadetails/java-0603.html,但我没有看到明显的改善。

有没有办法更快地打印到控制台,还是我必须使用JFrame / JTextArea策略?

2 个答案:

答案 0 :(得分:2)

您的问题是您正在向控制台打印250kb文件。没有人可以阅读或理解它(以500行/秒读取十六进制?),所以你做了一个完全不必要的步骤。

如果您要将文件转换为十六进制字符表示形式,请将输出粘贴到文件中,让用户使用真实文本查看器查看它,而不是将其转储到控制台中。

正如您所指出的那样,使用Swing / awt组件可以使用您自己的GUI元素进行此操作。

答案 1 :(得分:1)

写入屏幕上显示的控制台总是比写入文件慢得多。系统必须做很多工作才能将所有这些字符渲染为像素,并不断地绘制/重绘它们,以便它们通过控制台的显示区域进行滚动。

唯一的解决方法是不要这样做。

但是,如果您想要更快的替代方案仍然允许您查看输出,请将输出通过管道传递给“less”命令或等效命令。写入文件的速度仍然较慢,但比将大量文本转储到用户显示器的数量要多。