macbook pro,2015早期测试环境:
dd结果:
sudo time dd if=/dev/zero of=~/test bs=8k count=500000
500000+0 records in
500000+0 records out
4096000000 bytes transferred in 5.409609 secs (757171197 bytes/sec)
5.42 real 0.13 user 4.33 sys
约为757Mb / s
java代码:
try {
BufferedOutputStream bos = new BufferedOutputStream(
new FileOutputStream("temp_9999"), 8 * 1024);
for (int i = 0; i < 1000000000; ++i) {
bos.write(0);
}
bos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
超出java代码执行期间的iostat结果:
disk0 disk2 cpu load average
KB/t tps MB/s KB/t tps MB/s us sy id 1m 5m 15m
350.48 95 32.45 0.00 0 0.00 39 12 49 2.34 2.59 2.68
281.13 123 33.88 0.00 0 0.00 42 13 45 2.34 2.59 2.68
882.42 38 32.63 0.00 0 0.00 36 9 55 2.39 2.59 2.68
493.16 69 33.21 0.00 0 0.00 36 9 55 2.39 2.59 2.68
明显慢于dd,我想知道为什么BufferedOutputStream这么慢,我怎么能提高java写入性能呢?