当然のことながら、GUI を使用すると、上記のコマンドを実行しない限り、コンソールがロードされません。したがって、多くの print ステートメントがある場合でも、プログラムの速度に影響し、印刷されますか?
パフォーマンスに関する質問に対する最善の答えは、テストすることです。簡単なサンプル プログラムを次に示します。
import java.io.*;
class Test {
public static void main(String[] args) throws Exception {
// Untimed, for the sake of JIT compilation
for (int i = 0; i < 100000; i++) {
System.out.println("Foo");
}
// Now let's time it.
long start = System.nanoTime();
for (int i = 0; i < 100000; i++) {
System.out.println("Foo");
}
long end = System.nanoTime();
String outputPath = "c:\\users\\jon\\test\\results.txt";
try (FileWriter writer = new FileWriter(outputPath)) {
writer.write((end - start) + " nanoseconds");
}
}
}
これをコンソールから実行して非表示にすると、ラップトップで 5604097078 ナノ秒の結果が得られます。
Windows エクスプローラーから実行すると、出力がないため、3339245234 ナノ秒の結果が得られます。(明らかに、私はそれを数回実行しました - これらは単なる典型的な結果です。)したがって、実際には何もしていないコンソールに書き込む方がはるかに効率的ですが、無料にはほど遠いです. アプリケーションの問題かどうかは別の問題です。
いいえ、私が知る限り、出力は実際にはどこにも書かれていません。これをログに使用している場合は、専用のログ パッケージを使用することをお勧めします。これにより、より効率的な no-op ログを無効にすることができ、特定のファイルまたは任意の場所にログを記録することもできます。欲しいです。