воскресенье, 12 сентября 2010 г.

php unserialize

Обнаружил, что в PHP функция unserialize может серьёзно задуматься, если целевой объект - большой массив. В причинах пока не разобрался.

ini_set('memory_limit', '512M');
$file = '/tmp/1';
$data = range(1,2000000);

echo "Test serialize\n";
$time0 = microtime(1);
file_put_contents($file, serialize($data));
$time1 = microtime(1);
unserialize(file_get_contents($file));
$time2 = microtime(1);

$timeset = $time1-$time0;
$timeget = $time2-$time1;

echo "Serialize set time $timeset get time $timeget\n";


echo "Test JSON\n";
$time0 = microtime(1);
file_put_contents($file, json_encode($data));
$time1 = microtime(1);
json_decode(file_get_contents($file), true);
$time2 = microtime(1);

$timeset = $time1-$time0;
$timeget = $time2-$time1;

echo "JSON set time $timeset get time $timeget\n";

Результат работы

Test serialize
Serialize set time 1.39576292038 get time 31.2712199688
Test JSON
JSON set time 0.270380973816 get time 1.33044695854