El presente ejemplo tiene como finalidad comparar el rendimiento de ambas. Tras unas primeras pruebas con POJOS java de diversos tamaños me da la sensación de que Jackson es un poquitín mas rápida.
import java.io.IOException; import java.util.ArrayList; import java.util.List; import com.fasterxml.jackson.databind.ObjectMapper; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.reflect.TypeToken; public class TestMotoresJSON { private static final int NUMCLIENTES = 5; private static final int NUMFACTURAS = 100000; private static final Gson motorGSON = new GsonBuilder().create(); private static final ObjectMapper motorJACKSON = new ObjectMapper(); public static void main(String[] args) throws IOException { //Montamos un pojo Java con la lista de clientes y facturas final ListNecesitaremos las clases de apoyo:lstClientes = montaListaClientes(); //Serializo GSon long tmp = System.currentTimeMillis(); String lstClientesJSON = serializoGSon(lstClientes); System.out.println("Tiempo serialización GSon:"+(System.currentTimeMillis()-tmp)); //Deserializo GSon tmp = System.currentTimeMillis(); deserializoGSon(lstClientesJSON); System.out.println("Tiempo deserialización GSon:"+(System.currentTimeMillis()-tmp)); //Serializo Prueba tmp = System.currentTimeMillis(); lstClientesJSON = serializoJackson(lstClientes); System.out.println("Tiempo serialización Jackson:"+(System.currentTimeMillis()-tmp)); //Deserializo Prueba tmp = System.currentTimeMillis(); deserializoJackson(lstClientesJSON); System.out.println("Tiempo deserialización Jackson:"+(System.currentTimeMillis()-tmp)); } private static String serializoGSon(final List lstClientes){ return motorGSON.toJson(lstClientes); } private static void deserializoGSon(final String lstClientesJSON){ motorGSON.fromJson(lstClientesJSON, new TypeToken >(){}.getType()); } private static String serializoJackson(final List lstClientes) throws IOException { return motorJACKSON.writeValueAsString(lstClientes); } private static void deserializoJackson(final String lstClientesJSON) throws IOException { motorJACKSON.readValue(lstClientesJSON, motorJACKSON.getTypeFactory().constructCollectionType(ArrayList.class, Cliente.class)); } private static List montaListaClientes(){ final List lst = new ArrayList (); Cliente cliente = null; Factura fac = null; for (int c=0;c ()); for (int f=0;f
import java.util.List; public class Cliente { private String CIF; private String nombre; private String direccion; private String email; private String telefono; private String fax; private ListNecesitaremos importar en el pom.xml las dependencias:facturas; public String getCIF() { return CIF; } public void setCIF(String cIF) { CIF = cIF; } public String getNombre() { return nombre; } public void setNombre(String nombre) { this.nombre = nombre; } public String getDireccion() { return direccion; } public void setDireccion(String direccion) { this.direccion = direccion; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getTelefono() { return telefono; } public void setTelefono(String telefono) { this.telefono = telefono; } public String getFax() { return fax; } public void setFax(String fax) { this.fax = fax; } public List getFacturas() { return facturas; } public void setFacturas(List facturas) { this.facturas = facturas; } } public class Factura { private String id; private String fecha; private long bruto; private long neto; private long iva; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getFecha() { return fecha; } public void setFecha(String fecha) { this.fecha = fecha; } public long getBruto() { return bruto; } public void setBruto(long bruto) { this.bruto = bruto; } public long getNeto() { return neto; } public void setNeto(long neto) { this.neto = neto; } public long getIva() { return iva; } public void setIva(long iva) { this.iva = iva; } }
<dependencies>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.8.5</version>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.6.2</version>
</dependency>
</dependencies>
No hay comentarios:
Publicar un comentario