¿Hay una pena añadirPenalización para implementar Serializable en Java?
implements Serializable
a una clase Java? ¿Impacto en el tamaño del objeto o el rendimiento instanciado?
¿Hay una pena añadirPenalización para implementar Serializable en Java?
implements Serializable
a una clase Java? ¿Impacto en el tamaño del objeto o el rendimiento instanciado?
El costo es cercano a cero, no vale la pena preocuparse.
Algunos detalles adicionales:
A menos que usted/alguien más realmente serialice/deserialice, no habrá ningún impacto. Serializable
es solo una interfaz de marcador.
Probablemente solo aumente el tamaño del bytecode generado en unos pocos bytes.
Gracias, pensé que también. – AChoice
No hay impacto en el rendimiento a menos que realice la serialización/deserialización, pero hay compensaciones en términos de diseño de API.
De Effective java por Joshua Bloch
- Un mayor costo de implementar Serializable es que disminuye la flexibilidad de cambiar la implementación de una clase una vez que ha sido lanzado
- Un segundo costo de implementar Serializable es que aumenta la probabilidad de errores y agujeros de seguridad
- Un tercer costo de la implementación de Serializable es que aumenta la carga de las pruebas asociadas con la liberación de una nueva versión de una clase
Hasta qué punto estos son aplicables a usted dependen de su uso.
No hay impacto en el rendimiento incluso si * haces * serialización/deserialización, porque si no implementas 'Serializable' no puedes hacer eso para que no haya nada con que compararlo. – EJP
Gracias por la cita de Joshua. Estoy de acuerdo. – AChoice
Honestamente, no implementaría Serializable sin leer primero ese libro eficaz de Java. –
Serializable
es solo una interfaz de "marcador". No requiere que implemente ningún método.
Lo único es que se recomienda tener un static final long serialVersionUID
para ayudar a la API de serialización. Eso cuesta un solo valor de long
por clase serializada.
Es posible que desee comprobar this article about Java Serialization API. Describe la mayoría de las advertencias de serialización/deserialización en detalle.
Siempre debe considerar primero la sobrecarga de mantenimiento.El costo de una aplicación desplegada durante su vida útil puede ser varias veces el costo de desarrollarlo.
En este caso, el costo de hacer una clase Serializable, pero que en realidad no se utiliza para la serialización podría causar errores o confusión mucho mayor que el costo de rendimiento. p.ej. Digamos que lleva un minuto o es tiempo de que alguien determine que el Serializable no es necesario, esto puede costar mucho más que los pocos nano segundos de tiempo de inicio adicionales en los que incurre la aplicación.
Si realmente necesita que sea Serializable, no puede compararlo con la versión no serializable porque solo el primer caso realmente hará el trabajo requerido.
http://www.javalobby.org/java/forums/t88856.html –
Ese enlace tiene 5 años de antigüedad. – adarshr
¿Es el concepto? –