ログにlog4jを使用して、Javaでマルチスレッドアプリケーションを作成しています。私のベンチマークでは、ログを出力するたびに1または2 msの遅延が発生することがわかりました。調査の結果、問題はコンソール出力にしかないことがわかりました。私がlog4jを取り除いてSystem.out.printを使って直接印刷しても問題は発生しました。そのスレッドでは、私は次のテストに使用:JavaマルチスレッドアプリケーションSystem.out.printlnが待ち時間を生成します
System.out.println("===============================================================");
long ts = java.lang.System.currentTimeMillis();
String toPrint = "### TEST 1 " + (java.lang.System.currentTimeMillis() - ts) + " ms \n";
toPrint = toPrint + "### TEST 2 " + (java.lang.System.currentTimeMillis() - ts) + " ms \n";
toPrint = toPrint + "### TEST 3 " + (java.lang.System.currentTimeMillis() - ts) + " ms \n";
toPrint = toPrint + "### TEST 4 " + (java.lang.System.currentTimeMillis() - ts) + " ms \n";
System.out.print(toPrint);
System.out.println("===============================================================");
System.out.println("### TEST 1 " + (java.lang.System.currentTimeMillis() - ts) + " ms");
System.out.println("### TEST 2 " + (java.lang.System.currentTimeMillis() - ts) + " ms");
System.out.println("### TEST 3 " + (java.lang.System.currentTimeMillis() - ts) + " ms");
System.out.println("### TEST 4 " + (java.lang.System.currentTimeMillis() - ts) + " ms");
System.out.println("===============================================================");
をし、出力は次のようになります。
===============================================================
### TEST 1 0 ms
### TEST 2 0 ms
### TEST 3 0 ms
### TEST 4 0 ms
===============================================================
### TEST 1 7 ms
### TEST 2 9 ms
### TEST 3 10 ms
### TEST 4 11 ms
===============================================================
レイテンシーを作成せずに、コンソールに直接出力する、マルチスレッドアプリケーションのための正しい方法だろうか?
log4jを直接セットアップすることはできますか?私は結果を確認するためにnanos値にコードを変更しなければならなかったあなたの親切な助けを事前に
おかげで...
このレイテンシには問題があります。作業のたびに時間がかかります。次に印刷するだけの新しいスレッドを作成してください。 –
コンソールに書き込むのに少し時間がかかります。仕方ないよ。コンソールに大量にログを記録して問題が発生した場合は、ログレベルを下げるか、コンソールログを完全に無効にしてください。生成する可能性が高いログファイルを常に「テール」することができます。 – Andreas
@アンドレアスあなたの答えをありがとう。しかし、私のCPUのどれも飽和していないし、現代のサーバで1行を出力するのに2ミリ秒は妥当ではない。本当にコンソールをオフにしてpbを修正してください。 – deubNippon