Optimización de Serialización Java

Os mostramos una sencilla técnica para mejorar el rendimiento de la serialización de objetos en Java, a través de Streams asociados a buffers en memoria.

Mejora de rendimiento en la serialización

En el desarrollo de las aplicaciones Java, de un modo habitual, escribimos en
disco o transmitimos objetos completos.

En otro tutorial, os comentamos que una de las opciones de

comunicación entre applets y servlets
puede ser la serialización.

El modo de realizar ésta puede condicionar el rendimiento.

Os vamos a mostrar en un programa sencillo el modo tradicional y un modo
optimizado a través del uso de buffer en memoria.

import java.io.*;
/**
 *
 * @author Roberto Canales
 */
public class serializacion 
{
    static int veces = 10;
    
    public static void main(String[] args) 
    {
        Persona array[] = new Persona[10000];  
      
        for(int i=0;iejecutaProceso1(array);

	long total = System.currentTimeMillis() - tiempoInicial;
	System.out.println("El tiempo a es " + total);

        tiempoInicial = System.currentTimeMillis();
	ejecutaProceso2(array);
        
	total = System.currentTimeMillis() - tiempoInicial;
	System.out.println("El tiempo b es " + total);
    }

    static void ejecutaProceso1(Persona [] array)
    {
         try
            {
                FileOutputStream outfisico = new FileOutputStream("salida1.txt");
                ObjectOutputStream salida = new ObjectOutputStream(outfisico);

                for(int i=0; i 
    }

    static void ejecutaProceso2(Persona [] array)
    {
        try
        {
            FileOutputStream outfisico = new FileOutputStream("salida2.txt");
            ByteArrayOutputStream presalida = new ByteArrayOutputStream();
            ObjectOutputStream salida = new ObjectOutputStream(presalida);

            for(int i=0; i 
    }
}


class Persona implements Serializable
{
    int id;
    String nombre;
    
    public Persona(){}
    
    public Persona(int pId, String pNombre)
    {
        this.id = pId;
        this.nombre = pNombre;
    }
    
}

Podemos ver que la mejora de rendimiento es de un factor de 3

El tiempo a es 401
El tiempo b es 130

Como norma general, siempre realizaremos entradas y salidas a través mediante
streams que gestionen buffers.

A partir de la versión Java 1.4, aparece NIO (nuevo API de Input Output) que
nos permite mejorar el rendimiento de nuestros procesos de entrada y salida.

A la hora de desarrollar aplicaciones Java, el uso de técnicas simples puede
ayudarnos a mejorar el comportamiento de nuestro programas ….

Existen otras muchas técnicas que os iremos contando en otras ocasiones …..

 

Comentarios

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

He leído y acepto la política de privacidad

Información básica acerca de la protección de datos

  • Responsable: IZERTIS S.A.
  • Finalidad: Envío información de carácter administrativa, técnica, organizativa y/o comercial sobre los productos y servicios sobre los que se nos consulta.
  • Legitimación: Consentimiento del interesado
  • Destinatarios: Otras empresas del Grupo IZERTIS. Encargados del tratamiento.
  • Derechos: Acceso, rectificación, supresión, cancelación, limitación y portabilidad de los datos.
  • Más información: Puedes ampliar información acerca de la protección de datos en el siguiente enlace:política de privacidad

Creador y propietario de AdictosAlTrabajo.com, Director General de Autentia S.L., Profesor asociado en IE Business School, inversor en StartUps y mentor de emprendedores. Ingeniero Técnico de Telecomunicaciones y Executive MBA por IE Business School 2007. Twitter: Follow @rcanalesmora Autor de los Libros: Planifica tu éxito: de aprendiz a empresario, Informática profesional, las reglas no escritas para triunfar en la empresa, Conceptos ágiles aplicados a distintas áreas de una empresa y Conversaciones con CEOs y CIOs sobre Transformación Digital y Metodologías Ágiles. ¡Descárgalos gratis aquí! Puedes consultar mi CV y alguna de mis primeras aplicaciones (de los 90) aquí.

¿Quieres publicar en Adictos al trabajo?

Te puede interesar

22/06/2026

Juan Antonio Jiménez Torres

Vamos a instrumentalizar un SDD para un microservicio bancario. En este artículo sobre SDD - Spec Driven Development, instrumentalizado sobre OpenSpec vamos a construir una PoC de algo más serio que una tabla periódica. Un microservicio bancario muy simplificado que gestione cuentas y permita hacer transferencias

16/06/2026

Juan Antonio Jiménez Torres

Este es el segundo artículo sobre SDD, Spec Driven Development, instrumentalizado sobre OpenSpec. Pero esta vez nos acercaremos usando softwere gratuito. Por un lado OpenCode en lugar de ClaudeCode y usando el modelo gratuito Gemma4 de Google en lugar de otros de pago.

08/06/2026

Juan Antonio Jiménez Torres

Aprenderemos sobre SDD – Spec Driven Development instrumentalizado sobre OpenSpec. Haremos un primer acercamiento usando ClaudeCode con Sonnet, para luego, en un artículo posterior pasarnos a la versión gratuita de OpenCode con Gemma4