Java System.out.println与PrintWriter性能比较?
我想打印一百万行到标准输出Java System.out.println与PrintWriter性能比较?,java,printwriter,system.out,Java,Printwriter,System.out,我想打印一百万行到标准输出 System.out.println(result); 或 为了获得更好的性能(速度方面),我应该使用哪一个?为什么 --编辑-- BufferedWriter怎么样?在不同的输出流中包装System.out不会有什么区别。它只会调用相同的方法。您的局限性在于创建数百万个小对象,以及控制台接收、保存和显示所有内容的能力 此外,设计一个简单的测试也很容易 public static void main(String[] args) { System.out.p
System.out.println(result);
或
为了获得更好的性能(速度方面),我应该使用哪一个?为什么
--编辑--
BufferedWriter怎么样?在不同的输出流中包装System.out不会有什么区别。它只会调用相同的方法。您的局限性在于创建数百万个小对象,以及控制台接收、保存和显示所有内容的能力 此外,设计一个简单的测试也很容易
public static void main(String[] args) {
System.out.println();
long start = 0L;
start = System.currentTimeMillis();
for(int i = 0; i <= 999999; i++)
System.out.println(i);
long printStreamTime = System.currentTimeMillis() - start;
PrintWriter writer = new PrintWriter(System.out);
System.gc();
try {
Thread.sleep(1000L);
} catch(InterruptedException ie) {}
start = System.currentTimeMillis();
for(int i = 0; i <= 999999; i++)
writer.println(i);
long printWriterTime = System.currentTimeMillis() - start;
System.out.println();
System.out.println("PrintStream time = " + (printStreamTime / 1000.0));
System.out.println("PrintWriter time = " + (printWriterTime / 1000.0));
}
publicstaticvoidmain(字符串[]args){
System.out.println();
长启动=0升;
start=System.currentTimeMillis();
对于(int i=0;i我的建议是使用PrintWriter以获得更好的时间性能,尽管时间差在较小的程序中并不重要。对于较大的程序,您可能会注意到显著的差异。
我用PrintWriter
替换并运行了System.out.println
,执行时间从0.06秒缩短到0.05秒
下面是一个类似问题的链接:
希望它能有所帮助:)PrintWriter提供更好的性能,尽管在较小的程序中时间差不是很明显。
但随着要打印的行数的增加,这一点变得非常明显。
我在测试中使用了这些代码段的执行时间。
系统输出打印项次(一)
类Sprint{
公共静态void main(字符串[]args){
int n=10000000;
对于(int i=0;在这一点上,不要发布一百万行输出。也不要担心优化你永远不会做的事情。这取决于缓冲区一样的生产者和消费者problem@user2310289谢谢你的建议。但实际上我有一个案例,我需要这样做。谢谢你的回答。“自动刷新”布尔值会有什么不同吗?亲爱的同事们,如果你在任何情况下否决了任何答案,你都有责任说明出了什么问题。不给出任何理由显然是错误的;对方不知道出了什么问题,除非你指出,否则会继续这样做。
public static void main(String[] args) {
System.out.println();
long start = 0L;
start = System.currentTimeMillis();
for(int i = 0; i <= 999999; i++)
System.out.println(i);
long printStreamTime = System.currentTimeMillis() - start;
PrintWriter writer = new PrintWriter(System.out);
System.gc();
try {
Thread.sleep(1000L);
} catch(InterruptedException ie) {}
start = System.currentTimeMillis();
for(int i = 0; i <= 999999; i++)
writer.println(i);
long printWriterTime = System.currentTimeMillis() - start;
System.out.println();
System.out.println("PrintStream time = " + (printStreamTime / 1000.0));
System.out.println("PrintWriter time = " + (printWriterTime / 1000.0));
}
class Sprint{
public static void main(String[] args) {
int n=10000000;
for(int i=0;i<n;i++){
System.out.println(i);
}
}
}
import java.io.*;
class Pprint{
public static void main(String[] args) {
PrintWriter out = new PrintWriter(System.out);
int n=10000000;
for(int i=0;i<n;i++){
out.println(i);
}
out.flush();
}
}