mardi 9 février 2010

PHP serialize() et json_encode

En réponse à Julien sur twitter.
Voici un comparatif rapide des fonctions PHP5 permettant de coder un objet en phrase. Cette pratique est utile lorsque l'on souhaite conserver une structure longue à initialiser pour la recharger ensuite très rapidement.

J'ai utilisé en source un tableau unidimensionnel provenant du logiciel MediaWiki. Il s'agit d'une liste de références à des messages en anglais et traduits en français. Le fichier est codé en UTF-8.

Le script sous PHP 5.2.11:


<?php
# Load a one dimension array named $messages
include "mediawiki/languages/messages/MessagesFr.php";

function code_time_for( $function, $on, $iter ) {
    $start = microtime(true);
    for( $i=0;$i<$iter;$i++) {
        call_user_func( $function, $on );
    }
    $end = microtime(true);
    return
        sprintf("Ran $iter x %-11s in: %9.3f ms", $function, 1000*($end - $start));
}

$msg_ser  = serialize( $messages );
$msg_json = serialize( $messages );
$times = 777;

# Lets have a look at encoding:
print code_time_for( 'serialize'  , $messages, $times ) . "\n";
print code_time_for( 'json_encode', $messages, $times ) . "\n";
# And then compare decoding functions:
print code_time_for( 'unserialize', $msg_ser , $times ) . "\n";
print code_time_for( 'json_decode', $msg_json, $times ) . "\n";


Le résultat avec 777 occurrences :

Ran 777 x serialize   in:  1211.259 ms
Ran 777 x json_encode in:  3897.529 ms
Ran 777 x unserialize in:  1359.995 ms
Ran 777 x json_decode in:  1888.151 ms


Les fonctions PHP restent plus performantes. En tout cas pour ce tableau.

dimanche 7 février 2010

La méthode SCRUM en quelques vidéos

Ce billet vise à regrouper quelques vidéos en anglais concernant SCRUM, une méthode agile de développement logiciel. Cette méthode est en opposition avec les méthodes plus connues de l'élève ingénieur telles que Cycle en V, Merise ou le modèle Waterfall. Notamment, la méthode étonne par sa réactivité, l'absence de cahier des charges et son processus itératif.

Plus qu'un long discours (vous en trouverez un en fin de billet), je pense que vous aurez un meilleur aperçu en visionnant les quelques vidéos que je vous propose. Je les ai volontairement classée par ordre d'intérêt et de durée croissante.