2013-03-11 158 views
0

我有一個應用程序,我打印出文件的字節到系統控制檯。 (cmd.exe,在我的情況)它工作得很好,但我希望它變得更快(對於大文件),所以我優化了它。從我自己的測試中,它從文件中讀取字節並將它們存儲在char數組中的部分在250,000字節文件上需要15到32毫秒,但將這些字符打印到命令窗口需要超過9000毫秒!(幾乎9秒300倍慢!)我試過http://www.rgagnon.com/javadetails/java-0603.html,但我沒有看到明顯的改善。System.out.print slow

有沒有更快打印到控制檯的方法,還是必須使用JFrame/JTextArea策略?

+0

I/O總體來說很慢。通過打印字節你獲得了什麼? – Makoto 2013-03-11 01:57:02

+2

加快打印到控制檯的最佳方法是不打印它。 – Mysticial 2013-03-11 01:57:40

+0

@Makoto那麼,我的應用程序就是你所說的「二進制文件查看器」,許多人覺得它們很有用。 – user2097804 2013-03-11 02:02:04

回答

2

你的問題是你打印一個250kb的文件到控制檯。沒有人可以閱讀或理解它(讀取十六進制數爲500行/秒?),所以你正在做一個完全不必要的步驟。

如果要將文件轉換爲十六進制字符表示形式,請將輸出粘貼到文件中,讓用戶使用真實文本查看器查看它,而不是將其轉儲到控制檯中。如你所指出的那樣,使用Swing/awt組件可以讓你用自己的GUI元素來做到這一點。

+0

我喜歡將其傾倒在控制檯上,與其他文本編輯器不同,控制檯一直在繪製角色直到完成,而不是崩潰(即變得沒有響應) – user2097804 2013-03-11 02:15:17

1

寫入屏幕上顯示的控制檯始終比寫入文件要慢很多。系統必須做很多工作才能將所有這些字符渲染到像素,並不斷地對它們進行繪製/重繪,以便它們可以通過控制檯的顯示區域進行滾動。

唯一的治療方法是不做。

但是,如果您想要一個仍然允許您查看輸出的更快的替代方法,請將輸出傳輸到「less」命令或等效命令。寫入文件的速度仍然較慢,但是數量級比向用戶的顯示器傾倒大量文本要大。

+0

「less」命令會是什麼? – user2097804 2013-03-11 02:18:31

+0

「/ usr/bin/less」...在任何您需要關注的Linux系統上。 (我不知道窗戶是什麼,請在「superuser.com」上查詢) – 2013-03-11 02:45:55