diff options
-rw-r--r-- | bench.php | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/bench.php b/bench.php new file mode 100644 index 0000000..130761b --- /dev/null +++ b/bench.php @@ -0,0 +1,76 @@ +<?php + +//ini_set('memory_limit' ,'128M'); + +$ary = get_loaded_extensions(); +for($i=0; $i<pow(2, 9); $i++){ + $ary = array_merge($ary, range(0, 1024)); + $ary[] = md5("$i"); +} + +echo "count:".count($ary)."\n"; + +function getSize($ary) +{ + if (ini_get('mbstring.func_overload') & 2 && function_exists('mb_strlen')) { + $size = mb_strlen($ary, 'ASCII'); + } else { + $size = strlen($ary); + } + + return $size; +} + +echo "----\n"; +echo "PHP\n"; +$a = microtime(true); +$packed = serialize($ary); +$b = microtime(true); +echo ($refpck=($b-$a)) . " sec, " . ($refsize=getSize($packed)) . " bytes\n"; + +$a = microtime(true); +$pack = unserialize($packed); +$b = microtime(true); +echo ($refunp=($b-$a)) . " sec\n"; + + +echo "----\n"; +echo "IgBinary\n"; +$a = microtime(true); +$packed = igbinary_serialize($ary); +$b = microtime(true); +echo ($t=($b-$a)) . " sec, " . round($t*100/$refpck) . "%, ". ($x=getSize($packed)) . " bytes, ".round($x*100/$refsize)."%\n"; + +$a = microtime(true); +$pack = igbinary_unserialize($packed); +$b = microtime(true); +echo ($t=($b-$a)) . " sec, " . round($t*100/$refunp) . "%\n"; + + +echo "----\n"; +echo "MessagePack\n"; +$a = microtime(true); +$packed = msgpack_pack($ary); +$b = microtime(true); +echo ($t=($b-$a)) . " sec, " . round($t*100/$refpck) . "%, ". ($x=getSize($packed)) . " bytes, ".round($x*100/$refsize)."%\n"; + +$a = microtime(true); +$pack = msgpack_unpack($packed); +$b = microtime(true); +echo ($t=($b-$a)) . " sec, " . round($t*100/$refunp) . "%\n"; + + +echo "----\n"; +echo "JSON\n"; +$a = microtime(true); +$jsoned = json_encode($ary); +$b = microtime(true); +echo ($t=($b-$a)) . " sec, " . round($t*100/$refpck) . "%, ". ($x=getSize($jsoned)) . " bytes, ".round($x*100/$refsize)."%\n"; + +$a = microtime(true); +$json = json_decode($jsoned); +$b = microtime(true); +echo ($t=($b-$a)) . " sec, " . round($t*100/$refunp) . "%\n"; + + +?> |