公司做网站文案怎么写,网站开发验证码图片不显示,建手机网站的平台,做网站的软件工程师2019独角兽企业重金招聘Python工程师标准 结论#xff1a; 1、小数组用msgpack,无论空间和性能都最好 2、大数组#xff0c;考虑空间用igbinary,考虑性能用msgpack json_encode#xff0c;serialize#xff0c;igbinary#xff0c;msgpack四种序列化方式 结论 1、小数组用msgpack,无论空间和性能都最好 2、大数组考虑空间用igbinary,考虑性能用msgpack json_encodeserializeigbinarymsgpack四种序列化方式在之前已经有过相关的测试PHP5.5这方面的测试暂时没有这次测试基于PHP5.5并且测试用例http://blog.csdn.net/hguisu/article/details/7651730的测试用例是一样的只是从这个测试上家里igbinary serialize的测试作为对比可以参考http://www.ooso.net/archives/538 运行环境 PHP5.5 内存 16G 8核 2.0GMHz 性能空间大小列表 采用小数组测试结果注意为了数据好看小数组测试时循环次数为10000次大数组为1000次 [html] view plaincopy json :156 serialize :222 igbinary_serialize :123 msgpack :102 json_encode :0.22339701652527 json_decode :0.53043985366821 serialize :0.31040406227112 unserialize :0.30859398841858 Igbinary Serialize: 0.25647687911987 Igbinary unSerialize: 0.19416117668152 msgpack_pack: 0.14058780670166 msgpack_unpack: 0.29048585891724 方便对比把之前PHP5.3的测试结果放到下面之前并未测试igbinary [html] view plaincopy json :156 serialize :222 json_encode :0.1087498664856 json_decode :0.12652111053467 serialize :0.041656017303467 unserialize :0.040987968444824 采用大数组测试结果 [html] view plaincopy json :5350 serialize :8590 igbinary_serialize :2432 msgpack :3929 json_encode :0.92437314987183 json_decode :1.791629076004 serialize :1.3011419773102 unserialize :1.1485421657562 Igbinary Serialize: 0.90479803085327 Igbinary unSerialize: 0.69125699996948 msgpack_pack: 0.52022004127502 msgpack_unpack: 1.0104610919952 下面是之前的结果之前并未测试igbinary [html] view plaincopy json :5350 serialize :8590 json_encode :0.90479207038879 json_decode :1.753741979599 serialize :1.3566699028015 unserialize :1.3003630638123 小结数据方面 1:升级到PHP5.5后jsonserializeigbinary三种方式序列化后大小没有变化说明这三种格式的对象结构没有没有变化所以可以无缝升级msgpack由于没有之前的数据做对比暂时未知。 2:占用空间方面igbinary节省空间明显优势比如在json一个数组5.4k大小的数据serialize方式要8.6k而使用 igbinary方式仅需2.4k近乎为serialize方式的1/4但在小数组方面msgpack方式更具优势igbinary占用空间 123而msgpack方式仅为102。但是在大数组情况下明显igbinary方式优势更明显。大数组igbinary胜出小数组msgpack 胜出。性能方面: 1:在小数据时json和原生serialize的性能都比PHP5.3版本有所提升而在处理大数据量时性能又有所下降。 2:在序列化方面msgpack方式性能最好其次是json_encode的再次是igbinary这两者相差无几最差的为原生 serialize原生serialize性能消耗大概为json和igbinary方式的的1.4倍左右而是msgpack方式的2倍。在大数组方 面序列化方便基本上和小数组一致只是igbinary性能教较json_encode方式有所提升。本轮msgpack胜出。 3:在反序列方面igbinary的比序列化过程更快当然也是最快的但是这种快也是有成本代价的参见最后的注意事项最慢的为 json_decode方式猜测原因可能在于PHP作为服务器端应用最多的场景是encode而decode的最常见的为js处理方式性能不是很 理想。而msgpack反序列化性能基本上是它序列化的2倍。本轮igbinary胜出。 4:整体性能对比整体性能是序列化和反序列化之和简单对比会发现json是最差的次之是原生serialize再次为igbinary的方式 最优的为msgpack不过igbinary和msgpack相差真的非常小而在占用空间方面小数据时msgpack胜出大数据时 igbinary胜出算是各有千秋。所以如果追求极致的性能可以考虑使用msgpack如果对是使用空间要求苛刻那就选择igbinary方 式估计这也是PHPRedis选择igbinary作为内置序列化方式的原因之一另外还有一个原因考虑到Redis应用场景多是一写多读要保证反 序列化性能足够高非igbinary莫属。 使用igbinary并非没有代价在测试中我们发现调用igbinary_unserialize时传递非法数据会导致整个php进程死掉日志 [html] view plaincopy child 19131 exited on signal 11 (SIGSEGV) after 1.844938 seconds from start 1.844938 seconds from start 估 计是因为igbinary为了提升性能在unserialize时没有做相关格式验证导致整个进程异常退出。在使用Redis时我们先期使用 SERIALIZE_PHP方式序列化为了提升性能减少对Redis空间的浪费采用igbinary_serialize方式再切换的时候不小心踩 到这个坑导致服务器响应出错直接502幸亏在daily环境上。 转载于:https://my.oschina.net/jiangchike/blog/475086