今天早些时候很无聊,我开始思考一下
Java中缓冲和无缓冲字节流的相对性能.作为一个简单的测试,我下载了
a reasonably large text file,并写了一个简短的程序来确定缓冲流在复制文件时的效果.进行了四次测试:
>使用无缓冲的输入和输出字节流复制文件.
>使用缓冲的输入流和无缓冲的输出流复制文件.
>使用无缓冲输入流和缓冲输出流复制文件.
>使用缓冲输入和输出流复制文件.
毫不奇怪,使用缓冲输入和输出流比使用无缓冲流快几个数量级.然而,真正有趣的事情(至少对我来说)是2和3之间的速度差异.一些抽样结果如下:
Unbuffered input,unbuffered output Time: 36.602513585 Buffered input,unbuffered output Time: 26.449306847 Unbuffered input,buffered output Time: 6.673194184 Buffered input,buffered output Time: 0.069888689
对于那些感兴趣的人,代码可用here at Github.任何人都可以清楚,为什么2和3案例的时间是如此不对称?