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

      

  • 相关阅读:
    洛谷P2045 K方格取数(算竞进阶习题)
    洛谷P2764 最小路径覆盖问题
    BZOJ 1051 受欢迎的牛
    BZOJ 4196 软件包管理器
    跨域知识(一)——CORS
    CSS 实现隐藏滚动条同时又可以滚动
    数组map用法总结
    js和Jquery获取选中select值和文本
    closest和parents方法区别
    CSS面试题总结2(转)
  • 原文地址:https://www.cnblogs.com/archoncap/p/6057405.html
Copyright © 2011-2022 走看看