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