zoukankan      html  css  js  c++  java
  • 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.

  • 相关阅读:
    mysql自定义函数
    MYSQL常见运算符和函数
    PHP魔术方法和魔术变量总结
    魔术常量(Magic constants)
    常量和静态变量会先载入内存后在进行执行php代码
    php IP转换整形(ip2long)
    面试题1
    Java 通过 BufferReader 实现 文件 写入读取 示例
    UVA 2039 Pets(网络流)
    [置顶] Android框架攻击之Fragment注入
  • 原文地址:https://www.cnblogs.com/motian06/p/3449109.html
Copyright © 2011-2022 走看看