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 行/秒で 16 進数を読み取る?) ため、完全に不要な手順を実行しています。

ファイルを 16 進文字表現に変換する場合は、出力をファイルに貼り付けて、ユーザーがコンソールにダンプする代わりに実際のテキスト ビューアで表示できるようにします。

ご指摘のとおり、Swing/awt コンポーネントを使用すると、独自の GUI 要素でこれを作成できます。

于 2013-03-11T02:05:44.787 に答える
1

画面に表示されるコンソールへの書き込みは、ファイルへの書き込みよりもずっと遅くなります。システムは、これらすべての文字をピクセルにレンダリングし、コンソールの表示領域をスクロールできるように継続的にペイント/再ペイントするために多くの作業を行う必要があります。

唯一の治療法は、それをしないことです。

ただし、出力を表示できる高速な代替手段が必要な場合は、出力を「less」コマンドまたは同等のコマンドにパイプします。ファイルへの書き込みよりはまだ遅くなりますが、大量のテキストをユーザーのディスプレイにダンプするよりは桁違いです。

于 2013-03-11T02:08:03.690 に答える