私はこのようなことをしています:
for (int i = 0; i < 100000; i++) {
System.out.println( i );
}
基本的に、私は整数を計算し、文字列を約10K〜100K回出力してから、結果をsystem.outに書き込む必要があります。各結果は、改行で区切られます。
これを達成するための最速の方法は何ですか?
私はこのようなことをしています:
for (int i = 0; i < 100000; i++) {
System.out.println( i );
}
基本的に、私は整数を計算し、文字列を約10K〜100K回出力してから、結果をsystem.outに書き込む必要があります。各結果は、改行で区切られます。
これを達成するための最速の方法は何ですか?
大量のデータの場合、System.out.println
バッファリングがうまくいかないため、非効率的である可能性があります。その場合、BufferedOutputStream
またはを使用できますBufferedWriter
。
I/O 操作は、インメモリ処理 (整数の解析など) に比べて非常に遅いことに注意してください。したがって、文字列全体を「事前に」作成してから、一度だけ印刷することをお勧めします(もちろん、可能であれば):
StringBuilder sb = new StringBuilder();
for(int i = 0 ; i < 100000; i++) { sb.append(i).append("\n");}
String printMe = sb.toString();
System.out.println(printMe);
使用している出力ストリームのレベルをバッファリングするなどのさまざまな手法がありますが、最も基本的なものを使用することを好むと思いますSystem.out.println
お役に立てれば
System.out への書き込みで最も遅い部分は、書き込み内容を表示するのにかかる時間です。つまり、あなたが書く行ごとに、コンピューターはフォントを使用して情報をピクセルに変換し、行全体をスクロールする必要があります。これは、テキストを表示するために行う可能性が高いものよりもはるかに多くの作業です。
コンソールへの書き込みを高速化するには、