为什么带有ByteArrayOutputStream的ObjectOutputStream比普通的ObjectOutputStream更快

时间:2019-03-22 19:02:57

标签: performance objectoutputstream bytearrayoutputstream

我已经序列化了200.000个对象。 首先,我是用

ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("name.ser"));
for (int i = 0; i < 200_000; i++) {
   MyClass object = new MyClass(i);
   out.writeObject(object);
}

然后这样

RandomAccessFile raf = new RandomAccessFile("name.ser", "rw");
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream out = new ObjectOutputStream(baos);
for (int i = 0; i < 200_000; i++) {
   MyClass object = new MyClass(i);
   out.writeObject(object);
}
raf.write(baos.toByteArray());

第二个速度快了8倍。 所以我的问题是,为什么它速度更快? 也许是因为我没有直接写入文件?

谢谢。

0 个答案:

没有答案