<?php
ini_set('memory_limit', '512m');
$array = array_fill(0, 1000000, rand(1, 9999));
//JSON
$start = microtime(true);
$export = json_encode($array);
$end = microtime(true);
$duration = $end - $start;
print('JSON Encode: '.$duration.PHP_EOL);
$start = microtime(true);
$import = json_decode($export);
$end = microtime(true);
$duration = $end - $start;
print('JSON Decode: '.$duration.PHP_EOL);
//serialize
$start = microtime(true);
$export = serialize($array);
$end = microtime(true);
$duration = $end - $start;
print('Serialize: '.$duration.PHP_EOL);
$start = microtime(true);
$import = unserialize($export);
$end = microtime(true);
$duration = $end - $start;
print('Unserialize: '.$duration.PHP_EOL);
//Igbinary扩展
$start = microtime(true);
$export = igbinary_serialize($array);
$end = microtime(true);
$duration = $end - $start;
print('Igbinary Serialize: '.$duration.PHP_EOL);
$start = microtime(true);
$import = igbinary_unserialize($export);
$end = microtime(true);
$duration = $end - $start;
print('Igbinary UnSerialize: '.$duration.PHP_EOL);
//Msgpack扩展
$start = microtime(true);
$export = msgpack_pack($array);
$end = microtime(true);
$duration = $end - $start;
print('Msgpack Serialize: '.$duration.PHP_EOL);
$start = microtime(true);
$import = msgpack_unpack($export);
$end = microtime(true);
$duration = $end - $start;
print('Msgpack UnSerialize: '.$duration.PHP_EOL);
//Hprose扩展
$start = microtime(true);
$export = hprose_serialize($array);
$end = microtime(true);
$duration = $end - $start;
print('Hprose Serialize: '.$duration.PHP_EOL);
$start = microtime(true);
$import = hprose_unserialize($export);
$end = microtime(true);
$duration = $end - $start;
print('Hprose Unserialize: '.$duration.PHP_EOL);
?>
最优的为msgpack,不过igbinary和msgpack相差真的非常小,而在占用空间方面,小数据时msgpack胜出,大数据时igbinary胜出,算是各有千秋。所以,如果追求极致的性能,可以考虑使用msgpack,如果对是使用空间要求苛刻,那就选择igbinary方式