Optimización de Serialización Java

0
18867

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 …..

 

DEJA UNA RESPUESTA

Por favor ingrese su comentario!

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

Por favor ingrese su nombre aquí

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

  • Responsable:
  • Finalidad:
  • Legitimación:
  • Destinatarios:
  • Derechos:
  • Más información: Puedes ampliar información acerca de la protección de datos en el siguiente enlace:política de privacidad