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();
    }
}