Para la serialización de un objeto Java, me gustaría probar la diferencia entre usar JSON y usar herramientas generales de serialización en términos de rendimiento temporal y espacial.
JSON elige usar fastjson.
La herramienta de serialización utiliza Protostuff y Kyro. ¿Por qué no usar protobuf? Porque siento que para una clase Java con cientos de propiedades existentes, crear un nuevo archivo proto coincidente es un poco antihumano. Protostuff es una versión mejorada de Protobuf, que permite serializar un objeto Java directamente, usándolo de forma similar a Kyro, pero sin tantos procesos intermedios como Protobuf. Otros, como Hession, Java con serialización, etc., se dice que tienen un rendimiento mucho peor que Kryo y Protobuf, así que no sé qué esperar.
Tras una prueba sencilla, descubrí que la diferencia era bastante evidente, así que sentí que no era necesario hacer una evaluación específica. Corta un párrafo del registro y mándalo, todo el mundo lo siente.
coste time es System.nanoTime(); Las tres son las configuraciones predeterminadas sin ninguna configuración. La huella espacial tras la serialización es ligeramente menor que la del protomaterial, y ambos son mucho más altos que JSON. Esto es fácil de entender, al fin y al cabo, las cadenas json son legibles, no fuerces demasiado. El tiempo necesario para serializar y deserializar es mejor que en Kyro sobre FastJSON, y la diferencia es bastante evidente.
Así que, en conclusión, si no hay requisitos extremadamente exigentes para el espacio, Protostuff puede ser la mejor opción. Protostuff tiene una ventaja adicional sobre Kyro, es decir, si la clase Java añade campos después de la serialización y antes de la deserialización (lo cual es inevitable en el negocio real), Kyro será inútil. Sin embargo, el protostuff puede usarse siempre que se añada al final de la clase y utilice la serie Sun JDK. Por lo tanto, si la serialización se usa en escenarios como la caché, y el objeto serializado necesita almacenarse durante mucho tiempo, solo puedes elegir protostuff.
Por supuesto, si hace falta legibilidad o algo así, solo puedes usar json.
|