我开始只是运行一些测试来查看写入文件和打印到控制台之间的速度差异,以及SSD和HDD之间存在多大差异。我的程序只打印数字0-10,000,000
Console: 6.089
file: 4.269
我也经历了这个测试达到一亿,并且始终看到相同的时间比例。我还检查了改变测试的顺序,并没有看到速度的变化。
在这里,它变得奇怪。我将两个printlns都更改为.println(i*i+42/7*9-89*2%400/2);
这样做之后我得到了
Console: 8.586
file: 4.475
控制台时间显着增加,但文件时间没有增加。作为最后的奇怪,我将其更改为.println( ( i*i+42/7*9-89*2 ) %400/2)
,在这种情况下,我实际上在控制台输出中看到加速。
Console: 4.352
file: 4.66
任何人都可以解释这些奇怪的事吗?我似乎无法找到急剧变化的任何理由。我想也许它只是改变了必须写入的位数,但我无法解释为什么它只会影响控制台的速度。
非常感谢任何帮助或答案!这个问题困扰了我一段时间,所以我想我会问专家!
答案 0 :(得分:1)
在此解释为什么打印到控制台的速度比文件慢(取自why is system out println so slow)。
println
并不慢,它是与控制台连接的基础PrintStream
,由托管操作系统提供的速度很慢,因为:
由于不同的计算而导致的速度突然增加我无法给出解释。我最初想的是从int转换为double等,但这应该同时适用于println。
打印的结果是否长于控制台的宽度?