zoukankan      html  css  js  c++  java
  • igbinary vs serialize vs json_encode

    igbinary vs serialize vs json_encode
    2010-04-18 @ 23:01:58 · 作者 Volcano	· 归类于 php
    
    你可能会感兴趣的内容
    关于“facebook的memcached实战”小记
    试着开源LiteCloud项目
    memcache连接慢又一例
    启用memcached压缩注意事项
    Memcache的备忘
    最近看到memcached扩展支持额外的序列化方式 — igbinary,这是一个未收录到pecl的php扩展,它提供的两个主要方法:
    
    igbinary_serialize
    igbinary_unserialize
    据称可以用它来代替php自带的序列化函数serialize,性能更好,而且占用的字节数也更少。下面我就 igbinary ,serialize ,json_encode三者的性能做了一个简单的测试。
    
    测试
    
    以一个包含1000000个元素的数组做为原始数据,分别以json, serialize, igbinary进行序列化和反向操作。
    
    
    <?php
    ini_set('memory_limit', '512m');
    $array = array_fill(0, 1000000, rand(1, 9999));
    
    $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);
    
    $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('Serialize: ' . $duration . PHP_EOL);
    
    $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 Serialize: ' . $duration . PHP_EOL);
    ?>
    测试结果
    
    JSON Encode: 0.084825992584229
    JSON Decode: 0.34976410865784
    Serialize: 0.38241410255432
    Serialize: 7.7904229164124
    Igbinary Serialize: 0.046916007995605
    Igbinary Serialize: 0.23396801948547
    
    从测试结果来看,速度方面优先级排列为 igbinary > json > serialize。同时我们也可以看到,php原生的serialize在对大对象进行反向操作时,速度真是掉队一大截了。
    
    占用字节数对比
    
    json: 5000001
    serialize: 15888902
    igbinary: 7868681
    在没有中文字符的情况下,json胜出,igbinary次之,serialize又被甩了几条街。
    

      

  • 相关阅读:
    javascript调用applet
    mysql“Access denied for user 'root'@'localhost'”问题的解决
    VS2010 加载Dll文件
    预处理符号
    什么是lib文件,lib和dll的关系如何[转]
    git常用命令
    VC项目配置基础[转]
    [转]Linux ftp命令的使用方法
    [转]JavaScript创建Applet 标签的属性介绍 以及 Applet调用JavaScript
    When you publish a workflow in Microsoft Dynamics CRM 4.0 after you install Update Rollup 2, you receive Error message
  • 原文地址:https://www.cnblogs.com/archoncap/p/6057405.html
Copyright © 2011-2022 走看看