• 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又被甩了几条街。
    

      

  • 相关阅读:
    实用的 jquery 弹出窗口 插件winbox
    软考大纲
    那些年踩过三轮车的程序员
    今天是周几?
    本故事荣获2011年度最佳故事情节奖.
    命令行修改linux时间
    [置顶] 自考,认证相关资料
    金山软件面试题
    del
    【转】数据结构:位图法
  • 原文地址:https://www.cnblogs.com/archoncap/p/6057405.html
Copyright © 2020-2023  润新知