• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    详解php中implode explode serialize json msgpack性能对比

    测试方法

    首先使用implode, serialize, json_encode, msgpack_pack创建四个文本文件,用于测试。

    创建代码如下:

    ?php
    $arr = array(
        'content1' => '一二三四五六七八九十',
        'content2' => '一二三四五六七八九十',
        'content3' => '一二三四五六七八九十'
    );
    echo file_put_contents('implode.txt', implode(',',$arr), true).'br>';
    echo file_put_contents('serialize.txt', serialize($arr), true).'br>';
    echo file_put_contents('json.txt', json_encode($arr), true).'br>';
    echo file_put_contents('msgpack.txt', msgpack_pack($arr), true);
    ?>

    创建后生成

    implode.txt    92字节
    serialize.txt   165字节
    json.txt          223字节
    msgpack.txt  121字节

    生成的字符串大小排序如下 implode msgpack_pack serialize json_encode

    如果数组简单,则json_encode有可能比serialize小

    例如:

    $arr = array('一','二','三','四','五','六','七','八','九','十');

    serialize   为147字节

    json_encode 为91字节

    比较 implode, serialize, json_encode, msgpack_pack 性能

    ?php
    $arr = array(
        'content1' => '一二三四五六七八九十',
        'content2' => '一二三四五六七八九十',
        'content3' => '一二三四五六七八九十'
    );
     
    $start = microtime(true);
    $i = 1000000;
    while($i>0){
        // 分别测试运行时间及内存使用情况
        $tmp = implode(',',$arr);
        // $tmp = serialize($arr);
        // $tmp = json_encode($arr);
        // $tmp = msgpack_pack($arr);
        $i--;
    }
    $end = microtime(true);
    echo 'run time:'.($end-$start).'sbr>';
    echo 'memory usage:'.(memory_get_usage()/1024).'KB';
    ?>

    implode       1.3225722312927s    628.50KB

    serialize     2.0553789138794s    628.32KB

    json_encode   2.5058920383453s    628.34KB

    结果:内存使用情况差不多,运行时间 implode msgpack_pack serialize json_encode

    比较 explode, unserialize, json_decode, msgpack_unpack 性能

    ?php
    $data = file_get_contents('implode.txt');
    //$data = file_get_contents('serialize.txt');
    //$data = file_get_contents('json.txt');
    //$data = file_get_contents('msgpack.txt');
     
    $start = microtime(true);
    $i = 1000000;
    while($i>0){
        $tmp = explode(',',$data);
        //$tmp = unserialize($data);
        //$tmp = json_decode($data, true);
        //$tmp = msgpack_unpack($data);
        $i--;
    }
    $end = microtime(true);
    echo 'run time:'.($end-$start).'sbr>';
    echo 'memory usage:'.(memory_get_usage()/1024).'KB';
    ?>

    explode         1.7446749210358s    628.74KB

    unserialize     2.1386790275574s    628.67KB

    json_decode     5.2423169612885s    628.84KB

    结果:内存使用情况差不多,运行时间 explode serialize msgpack_unpack json_decode

    总结

    由于implode/explode不适合使用复杂的结构,因此常用的为serialize,json,msgpack三种。

    而三种比较,运行速度,内存占用,空间占用最优为msgpack, 其次是serialize,最后是json。

    如有条件,建议使用msgpack序列化处理数据。

    以上就是详解php中implode/explode、serialize、json、msgpack性能对比的详细内容,更多关于php性能对比的资料请关注脚本之家其它相关文章!

    您可能感兴趣的文章:
    • php提高脚本性能的4个技巧
    • 使用Rancher在K8S上部署高性能PHP应用程序的教程
    • php高性能日志系统 seaslog 的安装与使用方法分析
    • php7性能提升的原因详解
    • golang、python、php、c++、c、java、Nodejs性能对比
    • PHP调试及性能分析工具Xdebug详解
    • php性能分析之php-fpm慢执行日志slow log用法浅析
    • PHP性能优化大全(php.ini)
    • PHP框架性能测试报告
    上一篇:PHP json_encode中文乱码解决方法
    下一篇:PHP代码加密和扩展解密实战
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯

    时间:9:00-21:00 (节假日不休)

    地址:江苏信息产业基地11号楼四层

    《增值电信业务经营许可证》 苏B2-20120278

    详解php中implode explode serialize json msgpack性能对比 详解,php,中,implode,explode,