php 字符串压缩方法比较示例


Posted in PHP onJanuary 23, 2014

php 提供的字符串压缩方法有

1.gzcompress — Compress a string

This function compress the given string using the ZLIB data format.

2.gzencode — Create a gzip compressed string

This function returns a compressed version of the input data compatible with the output of the gzip program

3.gzdeflate — Deflate a string

This function compress the given string using the DEFLATE data format.

4.bzcompress — 把一个字符串压缩成 bzip2 编码数据

bzcompress() 压缩了指定的字符串并以 bzip2 编码返回数据。

下面对这四种方法进行压缩比较,分别进行中文和英文数字的压缩

<?php $str1 = '布局 1 介绍 布局,简单来说就是设置元素的大小和位置。 Ext 的布局系统包括组件,布局,容器,容器是一种特殊的组件,可以管理组件的大小和位置。 容器是通过 doLayout 来重新计算布局,并更新 DOM. 2 手工布局是不必要的,框架会为你自动处理。'; 
$str2 = '!@#$%^&*()QWERTYUIOPSDFGHJKL!@#$%^&*()QWERTYUIOPSDFGHJKL:ZXCVBNMa!@#$%^&*()ERTYUIODFGHJKLXCVBNM@#$%^&*()RTYUIOPD:ZXCVBNM#!@#!@#$%^&*()QWERTYUIOPSDFGHJKL:ZXCVBNM-!@#$%^&*()ERTYUIODFGHJKLXCVBNM@#$%^&*()RTYUIOPD$%^&*()ERTYUIODFGHJ!@#$%^&*()QWERTYUIOPSDFGHJKL:ZXCVBNM]!@#$%^&*()ERTYUIODFGHJKLXCVBNM@#$%^&*()RTYUIOPDKLXCVBNM@#$%^&*()RTYUIOPDFGHJKLCVBNMFGHJTYU%^&RFGHJ4d56g7h8ui7h8ujirqwerqh8'; 
echo '<b>压缩中文比较</b><br><br>'; 
compress_comp($str1, 1000); // 压缩1000次 与 解压缩1000次比较 
echo '<b>压缩英文数字比较</b><br><br>'; 
compress_comp($str2, 1000); // 压缩1000次 与 解压缩1000次比较 
/* 压缩 */ 
function compress_comp($str, $num){ 
$func_compress = array('gzcompress', 'gzencode', 'gzdeflate', 'bzcompress'); 
echo '原文:'.$str.'<br><br>'; 
echo '原文大小:'.strlen($str).'<br><br>'; 
for($i=0,$length=count($func_compress); $i<$length; $i++){ 
$starttime = get_microtime(); 
for($j=0; $j<$num; $j++){ 
switch($func_compress[$i]){ 
case 'gzcompress': 
$mstr = gzcompress($str, 9); // 解压方法:gzuncompress 
break; 
case 'gzencode': 
$mstr = gzencode($str, 9); // 解压方法:gzdecode php>=5.4 
break; 
case 'gzdeflate': 
$mstr = gzdeflate($str, 9); // 解压方法:gzinflate 
break; 
case 'bzcompress': 
$mstr = bzcompress($str, 9); // 解压方法:bzdecompress 
break; 
} 
} 
$endtime = get_microtime(); 
echo $func_compress[$i].' 压缩后大小:'.strlen($mstr).' 耗时:'.round(($endtime-$starttime)*1000,5).'ms<br><br>'; 
} 
} 

/* 获取 microtime */ 
function get_microtime(){ 
list($usec, $sec) = explode(' ', microtime(true)); 
return $usec+$sec; 
} 
?>

执行结果:
压缩中文比较 原文:布局 1 介绍 布局,简单来说就是设置元素的大小和位置。 Ext 的布局系统包括组件,布局,容器,容器是一种特殊的组件,可以管理组件的大小和位置。 容器是通过 doLayout 来重新计算布局,并更新 DOM. 2 手工布局是不必要的,框架会为你自动处理。 
原文大小:328 
gzcompress 压缩后大小:251 耗时:59.99994ms 
gzencode 压缩后大小:263 耗时:120.00012ms 
gzdeflate 压缩后大小:245 耗时:119.99989ms 
bzcompress 压缩后大小:303 耗时:259.99999ms 
压缩英文数字比较 
原文:!@#$%^&*()QWERTYUIOPSDFGHJKL!@#$%^&*()QWERTYUIOPSDFGHJKL:ZXCVBNMa!@#$%^&*()ERTYUIODFGHJKLXCVBNM@#$%^&*()RTYUIOPD:ZXCVBNM#!@#!@#$%^&*()QWERTYUIOPSDFGHJKL:ZXCVBNM-!@#$%^&*()ERTYUIODFGHJKLXCVBNM@#$%^&*()RTYUIOPD$%^&*()ERTYUIODFGHJ!@#$%^&*()QWERTYUIOPSDFGHJKL:ZXCVBNM]!@#$%^&*()ERTYUIODFGHJKLXCVBNM@#$%^&*()RTYUIOPDKLXCVBNM@#$%^&*()RTYUIOPDFGHJKLCVBNMFGHJTYU%^&RFGHJ4d56g7h8ui7h8ujirqwerqh8 
原文大小:386 
gzcompress 压缩后大小:116 耗时:50.00019ms 
gzencode 压缩后大小:128 耗时:99.9999ms 
gzdeflate 压缩后大小:110 耗时:89.99991ms 
bzcompress 压缩后大小:183 耗时:210.00004ms

可以得出

gzcompress 速度最快,压缩比率较高。

gzdeflate 压缩比率最高,速度稍慢于gzcompress

gzencode 与 gzdeflate 比较接近,gzdeflate稍有优势

bzcompress 速度最慢,压缩比率最慢。

因此建议使用 gzcompress 和 gzdeflate。

PHP 相关文章推荐
PHP开发框架总结收藏
Apr 24 PHP
10条PHP编程习惯助你找工作
Sep 29 PHP
记录mysql性能查询过程的使用方法
May 02 PHP
解析php做推送服务端实现ios消息推送
Jul 01 PHP
基于PHP创建Cookie数组的详解
Jul 03 PHP
php将mysql数据库整库导出生成sql文件的具体实现
Jan 08 PHP
PHP把数字转成人民币大写的函数分享
Jun 30 PHP
PHP实现自动识别Restful API的返回内容类型
Feb 07 PHP
Win7下手动安装apache2.2、php5.4笔记
Apr 03 PHP
PHP基于phpqrcode生成带LOGO图像的二维码实例
Jul 10 PHP
joomla组件开发入门教程
May 04 PHP
Yii2――使用数据库操作汇总(增删查改、事务)
Dec 19 PHP
php 生成短网址原理及代码
Jan 23 #PHP
解决php接收shell返回的结果中文乱码问题
Jan 23 #PHP
php弹出对话框实现重定向代码
Jan 23 #PHP
php多种形式发送邮件(mail qmail邮件系统 phpmailer类)
Jan 22 #PHP
简单的php缓存类分享     php缓存机制
Jan 22 #PHP
一组PHP可逆加密解密算法实例代码
Jan 21 #PHP
discuz加密解密函数使用方法和中文注释
Jan 21 #PHP
You might like
文件上传程序的全部源码
2006/10/09 PHP
分享50个提高PHP执行效率的技巧
2015/12/26 PHP
浅谈Javascript 执行顺序
2013/12/18 Javascript
js获得参数的getParameter使用示例
2014/02/26 Javascript
js实现的捐赠管理完整实例
2015/01/20 Javascript
常见的javascript跨域通信方法
2015/12/31 Javascript
require简单实现单页应用程序(SPA)
2016/07/12 Javascript
简单实现IONIC购物车功能
2017/01/10 Javascript
在node中如何使用 ES6
2017/04/22 Javascript
layui选项卡效果实现代码
2017/05/19 Javascript
Node.js中多进程模块Cluster的介绍与使用
2017/05/27 Javascript
JS基于正则表达式实现的密码强度验证功能示例
2017/09/21 Javascript
30分钟快速入门掌握ES6/ES2015的核心内容(上)
2018/04/18 Javascript
Vue组件中prop属性使用说明实例代码详解
2018/05/31 Javascript
用vue快速开发app的脚手架工具
2018/06/11 Javascript
详解Vue结合后台的列表增删改案例
2018/08/21 Javascript
微信小程序canvas.drawImage完全显示图片问题的解决
2018/11/30 Javascript
JQuery中DOM节点的操作与访问方法实例分析
2019/12/23 jQuery
在vue中封装的弹窗组件使用队列模式实现方法
2020/07/23 Javascript
vue实现广告栏上下滚动效果
2020/11/26 Vue.js
python中xrange用法分析
2015/04/15 Python
pandas重新生成索引的方法
2018/11/06 Python
python中下标和切片的使用方法解析
2019/08/27 Python
Python实现CNN的多通道输入实例
2020/01/17 Python
python GUI库图形界面开发之PyQt5滑块条控件QSlider详细使用方法与实例
2020/02/28 Python
Django Form常用功能及代码示例
2020/10/13 Python
PyQt5的QWebEngineView使用示例
2020/10/20 Python
学生的自我鉴定范文
2013/10/24 职场文书
专科应届生求职信
2013/11/24 职场文书
安全生产大检查方案
2014/05/07 职场文书
机关党员四风问题个人整改措施
2014/10/26 职场文书
新婚姻法离婚协议书范文
2014/11/30 职场文书
婚礼庆典答谢词
2015/01/20 职场文书
公司开除员工通知
2015/04/22 职场文书
2016年乡镇七一建党节活动总结
2016/04/05 职场文书
俄罗斯十大城市人口排名,第三首都仅排第六,第二是北方首都
2022/03/20 杂记