Обнаружил, что в 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
воскресенье, 12 сентября 2010 г.
Подписаться на:
Сообщения (Atom)