Velocidad de datos en PHP: Serialize vs JSON vs XMLRPC

Hoy estaba estudiando, para un nuevo proyecto, las alternativas disponibles a la hora de serializar los datos. Es para uso interno de una aplicación, así que la decisión debía estar basada en la velocidad. He presupuesto que al ser serialize la función de toda la vida en PHP, sería lo más rápido, para probarlo he empleado el siguiente test, que me ha sorprendido un poco.

NOTA 1: XMLRPC ya he presupuesto que sería la opción más lenta, pero está incluído para comparar diferencias.

NOTA 2: Ojo que consume bastante memoria

$array = array("esto","es",array("una"=>"simple","prueba"=>"rapida"));
for($i = 0; $i < 1024*16; $i++) {
    $a2[] = $array;
}

$tests = array(
    "serialize" => array("serialize", "unserialize"),
    "jason" => array("json_encode", "json_decode"),
    "xmlrpc" => array("xmlrpc_encode", "xmlrpc_decode")
);

foreach($tests as $test => $functions) {
    $tiempo_inicio = microtime_float();
    $encoded = $functions[0]($a2);
    $tiempo_final = microtime_float();
    $tiempo_enc = $tiempo_final - $tiempo_inicio;

    $tiempo_inicio = microtime_float();
    $decoded = $functions[1]($encoded);
    $tiempo_final = microtime_float();
    $tiempo_dec = $tiempo_final - $tiempo_inicio;

    print("Tiempo de ".$functions[0]."(): ".$tiempo_enc);
    print("<[nueva-linea-que-quita-wordpress]>");
    print("Tiempo de ".$functions[1]."(): ".$tiempo_dec);
    print("<[nueva-linea-que-quita-wordpress]>");
}

function microtime_float()
{
    list($useg, $seg) = explode(" ", microtime());
    return ((float)$useg + (float)$seg);
}

Que ha dado como resultado esto:

Tiempo de serialize(): 0.105422973633
Tiempo de unserialize(): 0.118716001511
Tiempo de json_encode(): 0.0492351055145
Tiempo de json_decode(): 0.15966296196

Tiempo de xmlrpc_encode(): 0.87334895134
Tiempo de xmlrpc_decode(): 2.80069494247

Conclusión: JSON es bastante más rápido que serialize al codificar, y un poco más lento al descodificar (y sin duda infinitamente más rápido al tratarlo en Javascript). Una pista interesante, a evaluar según el uso que se le den a los datos codificados. Y lo de XMLRPC, bueno se veía venir, lógicamente tiene un tiempo de proceso muy superior a las otras dos opciones.

Explore posts in the same categories: Programación

Tags: , , , , ,

You can comment below, or link to this permanent URL from your own site.

Comment: