自然地,使用 GUI,除非您运行我在上面放置的命令,否则您不会加载控制台,所以如果您有很多打印语句,它是否仍然会影响您的程序的速度,并且它们是否仍然打印?
任何性能问题的最佳答案都是对其进行测试。这是一个快速示例程序:
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 纳秒的结果。(显然我已经运行了几次 - 这些只是典型的结果。)因此,虽然写入实际上没有做任何事情的控制台效率要高得多,但它远非免费。这是否是您的应用程序中的问题是另一回事。
不,据我所知,输出真的没有写在任何地方。如果您使用它进行日志记录,最好使用专用的日志记录包,这将允许您禁用它以获得更有效的无操作日志记录,还允许您记录到特定文件或任何您想要的位置想。