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