写入标准输出vs写入文件

fo_*_*x86 1 java linux io

这类似于:

打印到控制台vs写入文件(速度)

我很困惑,因为有两个相互矛盾的答案.我写了一个简单的java程序

 for(int i=0; i<1000000; i++){
       System.out.println(i);
 }
Run Code Online (Sandbox Code Playgroud)

并运行它与/usr/bin/time -v java test测量时间输出到标准输出,然后,我尝试/usr/bin/time -v java test > file/usr/bin/time -v java > /dev/null.写入控制台的速度最慢(10秒),然后是文件(6秒),/dev/null速度最快(2秒).为什么?

JB *_*zet 5

因为写入控制台需要在每次写入内容时刷新屏幕,这需要时间.

写入文件需要在磁盘上写入字节,这需要时间,但刷新屏幕的时间要少.

并且写入/dev/null不会在任何地方写任何内容,这会花费更少的时间.