rendimiento de flujo de salida de comparación

mido:

Tengo un objeto serializable y quiero escribirlo en el archivo. ¿Debo usar ObjectOutputStream.writeObject()o convertirlo en un byte[](usando ObjectOutputStream) y luego use FileOutputStream.write()?

ObjectOutputStream objectOutputStream = new ObjectOutputStream(new FileOutputStream(file))
objectOutputStream.writeObject(myObject);

o

ByteArrayOutputStream byteOut = new ByteArrayOutputStream();
ObjectOutputStream out;
out = new ObjectOutputStream(byteOut);
out.writeObject(myObject);
new FileOutputStream(file).write(byteOut.toByteArray());
John Kugelman:

Buffering puede mejorar el rendimiento de coalescencia pequeñas escrituras en las escrituras a granel más grandes. Si desea introducir un amortiguando el uso BufferedOutputStream, que hace lo que está haciendo con la corriente matriz de bytes sin cambiar el código de aguas abajo.

// Unbuffered
ObjectOutputStream outputStream = new ObjectOutputStream(new FileOutputStream(file));

// Buffered
ObjectOutputStream outputStream = new ObjectOutputStream(new BufferedOutputStream(new FileOutputStream(file)));

De esta manera se puede seguir utilizando ObjectOutputStreamsin el resto del código que tiene que saber si el flujo es amortiguada o sin búfer.

Al igual que con cualquier cambio relacionada con el rendimiento, debe referente ambos enfoques para ver mejor que realiza. No hacer cambios como éste sin pruebas empíricas. Si usted no prueba, que está sólo una suposición.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=359974&siteId=1
Recomendado
Clasificación