bezier/msgpack-php

此包的最新版本(1.0.0)没有可用的许可证信息。

MessagePack与纯PHP故障转移

1.0.0 2014-10-23 07:14 UTC

This package is not auto-updated.

Last update: 2024-09-24 08:06:58 UTC


README

此项目旨在实现使用PHP故障转移的MessagePack序列化。这可能对无法安装php-modules或使用HipHop将PHP编译为C++的人有用。

Composer

https://packagist.org.cn/packages/bezier/msgpack-php

项目

请参阅:http://msgpack.org/

示例

  use CharStream;
  
  $hole = "Light"
  $pack = msgpack_pack($hole);
  
  if ( msgpack_unpage($pack) === $hole ) {
       echo "The hole is lit.";
  }

注意事项

  • 仅定义了msgpack_pack()和msgpack_unpack()。
  • 它只在小端架构上进行了测试,但应该也可以在大端架构上工作,如果可能的话,请测试它。
  • uint64和int64类型可能需要64位系统才能工作
  • 它使用is_x()来选择类型,在使用函数之前进行类型转换
  • 与官方库不同,您不能打包对象。如果您知道如何做,请进行分支。
  • 它将始终将整数打包到尽可能少的位数中,并优先选择无符号数。

基准测试

基于msgpack/php/benchmark.php

如您所见,纯PHP实现(msgpack-php)与msgpack创建的优秀的php-extension相比相当慢。然而,当msgpack-php使用HipHop编译时(msgpack-hphp),性能差异要小得多,甚至在某些特定基准测试中msgpack-hphp甚至击败了msgpack,这可能是由于基准测试本身也是用HipHop编译的。

计时值是平均秒数,采样10次,每次迭代10.000次。百分比相对于正常的php serialize()(不是HipHop的版本)。

[integer   ]       default          json      igbinary       msgpack   msgpack-php   msgpack-hphp
status     :           OK           OK           OK           OK           OK          OK
serialize  : 0.0105 (100%) 0.0090 ( 85%) 0.0089 ( 84%) 0.0093 ( 88%) 0.0550 ( 523%) 0.0051 ( 57%)
unserialize: 0.0089 (100%) 0.0119 (134%) 0.0088 ( 99%) 0.0090 (101%) 0.0985 (1110%) 0.0208 (234%)
size       :     12 (100%)      9 ( 75%)      9 ( 75%)      5 ( 41%)      5 (  41%)      5 ( 41%)

[double    ]       default          json      igbinary       msgpack   msgpack-php   msgpack-hphp
status     :           OK           OK           OK           OK           OK          OK
serialize  : 0.0323 (100%) 0.0132 ( 40%) 0.0092 ( 28%) 0.0094 ( 28%) 0.0740 (229%)  0.0074 ( 23%)
unserialize: 0.0221 (100%) 0.0124 ( 56%) 0.0085 ( 38%) 0.0089 ( 40%) 0.1151 (521%)  0.0217 ( 98%)
size       :     54 (100%)     15 ( 27%)     13 ( 24%)      9 ( 16%)      9 ( 16%)       9 ( 16%)

[string    ]       default          json      igbinary       msgpack   msgpack-php   msgpack-hphp
status     :           OK           OK           OK           OK           OK          OK
serialize  : 0.0104 (100%) 0.0123 (118%) 0.0092 ( 88%) 0.0096 ( 91%) 0.0728 ( 700%) 0.0067 ( 64%)
unserialize: 0.0095 (100%) 0.0153 (160%) 0.0093 ( 97%) 0.0097 (101%) 0.1469 (1543%) 0.0301 (316%)
size       :     40 (100%)     34 ( 85%)     38 ( 95%)     35 ( 87%)     35 (  87%)     35 ( 87%)

[array     ]       default          json      igbinary       msgpack   msgpack-php   msgpack-hphp
status     :           OK           OK           OK           OK           OK          OK
serialize  : 0.0183 (100%) 0.0297 (162%) 0.0222 (121%) 0.0134 ( 73%) 0.5567 (3042%) 0.0432 (236%)
unserialize: 0.0174 (100%) 0.0363 (207%) 0.0171 ( 98%) 0.0170 ( 97%) 0.7823 (4483%) 0.1665 (957%)
size       :    226 (100%)    176 ( 77%)    186 ( 82%)    176 ( 77%)    176 (  77%)    176 ( 77%)

[array     ]       default          json      igbinary       msgpack    msgpack-php   msgpack-hphp
status     :           OK           OK           OK           OK           OK           OK
serialize  : 0.0199 (100%) 0.0481 (242%) 0.0306 (153%) 0.0148 ( 74%) 0.8513 (4285%) 0.0763 ( 383%)
unserialize: 0.0231 (100%) 0.0583 (252%) 0.0202 ( 87%) 0.0248 (107%) 1.4168 (6134%) 0.3156 (1366%)
size       :    406 (100%)    351 ( 86%)    346 ( 85%)    351 ( 86%)    351 (  86%)    351 (  86%)