igbinary vs serialize vs json_encode

最近看到memcached扩展支持额外的序列化方式 -- igbinary,这是一个未收录到pecl的php扩展,它提供的两个主要方法:

  • igbinary_serialize
  • igbinary_unserialize

据称可以用它来代替php自带的序列化函数serialize,性能更好,而且占用的字节数也更少。下面我就 igbinary ,serialize ,json_encode三者的性能做了一个简单的测试。

测试

以一个包含1000000个元素的数组做为原始数据,分别以json, serialize, igbinary进行序列化和反向操作。

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

一图顶千言

柱状图越矮小的性能越好

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Windows上安装Redis 7.2.1,您可以按照以下步骤进行操作: 1. 首先,您需要下载Redis的Windows版本。您可以在Redis官方网站的下载页面中找到适用于Windows的Redis版本。请访问下载页面,并选择适合您系统的Redis版本进行下载。 2. 下载完Redis后,您需要确保您的PHP版本与Redis版本兼容。根据引用的错误信息,您需要确保您使用的是PHP 7.2版本。您可以在PHP官方网站上找到适合您系统的PHP 7.2版本进行下载和安装。 3. 安装完PHP后,您需要下载和安装与您下载的Redis版本和PHP版本兼容的Redis扩展库。根据引用下载页面的链接,您可以下载适用于PHP 7.2的igbinary扩展库。请访问下载页面,并选择适合您系统和PHP版本的igbinary扩展库进行下载。 4. 下载完igbinary扩展库后,您还需要下载和安装与Redis版本兼容的Redis扩展库。请访问下载页面,并选择适合您系统和Redis版本的Redis扩展库进行下载。 5. 安装完igbinary和Redis扩展库后,您需要将下载的扩展库添加到您的PHP配置文件中。打开您的PHP配置文件(php.ini),找到扩展库部分,并添加以下两行代码: ``` extension=php_igbinary.dll extension=php_redis.dll ``` 注意要根据您实际下载的扩展库文件名进行相应的修改。 6. 保存并关闭php.ini文件后,重启您的Web服务器(如Apache)以使配置文件生效。 现在,您已经成功安装了Redis 7.2.1,并与PHP 7.2版本兼容。您可以在您的PHP代码中使用Redis相关函数来操作和管理Redis数据库了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值