• php中serialize、unserialize与json_encode、json_decode比较


    性能比较

    同一个变量编码或解码10000次,每个函数执行10000次所需时间

    php5.2.13

    json : 190 
    serialize : 257 
    json_encode : 0.08364200592041 
    json_decode : 0.18004894256592 
    serialize : 0.063642024993896 
    unserialize : 0.086990833282471 
    DONE. 

    时间

    json_decode两倍于unserialize

    php5.3.2

    json : 190 
    serialize : 257 
    json_encode : 0.062805891036987 
    json_decode : 0.14239192008972 
    serialize : 0.048481941223145 
    unserialize : 0.05927300453186 
    DONE. 

    json_decode两倍于unserialize

    总之 unserialize 解码速度要更快,在做缓存,编码频繁解码的情况下使用会有更好的效率。

    测试代码如下

    <?php 
    $target = array ( 
        'name' => '全能头盔', 
        'quality' => 'Blue', 
        'ti_id' => 21302, 
        'is_bind' => 1, 
        'demand_conditions' => array ( 
            'HeroLevel' => 1, 
        ), 
        'quality_attr_sign' => array ( 
            'HeroStrength' => 8, 
            'HeroAgility' => 8, 
            'HeroIntelligence' => 8, 
        ), 
    ); 
    
    $json = json_encode($target); //json_encode编码
    $seri = serialize($target); //serialize序列化
    echo "json :\t\t" . strlen($json) . "\r\n"; //json_encode后字符串长度
    echo "serialize :\t" . strlen($seri) . "\r\n\r\n"; //serialize序列化长度
    
    //---------------------------------- json_encode
    $stime = microtime(true); //起始微秒
    for ($i = 0; $i < 10000; $i ++){ //10000次
        json_encode($target); 
    } 
    $etime = microtime(true); //终止微秒
    echo "json_encode :\t" . ($etime - $stime) . "\r\n"; //运行时间
    
    //---------------------------------- json_decode
    $stime = microtime(true); 
    for ($i = 0; $i < 10000; $i ++){ 
        json_decode($json); 
    } 
    $etime = microtime(true); 
    echo "json_decode :\t" . ($etime - $stime) . "\r\n\r\n"; 
    
    //---------------------------------- serialize
    $stime = microtime(true); 
    for ($i = 0; $i < 10000; $i ++){ 
        serialize($target); 
    } 
    $etime = microtime(true); 
    echo "serialize :\t" . ($etime - $stime) . "\r\n"; 
    
    //---------------------------------- unserialize
    $stime = microtime(true); 
    for ($i = 0; $i < 10000; $i ++){ 
        unserialize($seri); 
    } 
    $etime = microtime(true); 
    echo "unserialize :\t" . ($etime - $stime) . "\r\n\r\n"; 
    echo 'DONE.'; 
    ?> 

    json : 190

    serialize : 257

    json_encode : 0.052663087844849

    json_decode : 0.068554162979126

    serialize : 0.023483037948608

    unserialize : 0.031199216842651

    DONE.

  • 相关阅读:
    bzoj4165 矩阵 堆维护多路归并
    bzoj2802 [Poi2012]Warehouse Store 贪心+堆
    bzoj1367 [Baltic2004]sequence 左偏树+贪心
    bzoj3011 [Usaco2012 Dec]Running Away From the Barn 左偏树
    uoj207 共价大爷游长沙 子树信息 LCT + 随机化 + 路径覆盖
    bzoj4764 弹飞大爷 LCT
    bzoj4817 & loj2001 [Sdoi2017]树点涂色 LCT + 线段树
    bzoj5020 & loj2289 [THUWC 2017]在美妙的数学王国中畅游 LCT + 泰勒展开
    bzoj4998 星球联盟 LCT + 并查集
    bzoj3091 城市旅行 LCT + 区间合并
  • 原文地址:https://www.cnblogs.com/motian06/p/3449109.html
Copyright © 2020-2023  润新知