0

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

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

4

2 回答 2

2

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

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

正如您所指出的,使用 Swing/awt 组件可以让您使用自己的 GUI 元素来实现这一点。

于 2013-03-11T02:05:44.787 回答
1

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

唯一的治疗方法是不这样做。

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

于 2013-03-11T02:08:03.690 回答