php 字符串压缩方法比较示例
2015-01-24信息快讯网
php 提供的字符串压缩方法有很多,下面为大家比较下php字符串压缩方法,感兴趣的朋友可以参考下
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中对各种加密算法、Hash算法的速度测试对比代码
最常用的8款PHP调试工具
一个不易被发现的PHP后门代码解析
linux下使用crontab实现定时PHP计划任务失败的原因分析
php操作redis中的hash和zset类型数据的方法和代码例子
30个php操作redis常用方法代码例子
PHP数组遍历知识汇总(包含遍历方法、数组指针操作函数、数组遍历测速)
php遍历数组的4种方法总结
CodeIgniter实现更改view文件夹路径的方法
php实现批量压缩图片文件大小的脚本
2个比较经典的PHP加密解密函数分享
ThinkPHP模板比较标签用法详解
ThinkPHP3.1新特性之对页面压缩输出的支持
PHP两种去掉数组重复值的方法比较
php实现zip压缩文件解压缩代码分享(简单易懂)
php中curl、fsocket、file_get_content三个函数的使用比较
php代码审计比较有意思的例子
一个PHP的ZIP压缩类分享
php使用imagick模块实现图片缩放、裁剪、压缩示例
php 根据url自动生成缩略图并处理高并发问题
php 生成短网址原理及代码
解决php接收shell返回的结果中文乱码问题
php弹出对话框实现重定向代码
php多种形式发送邮件(mail qmail邮件系统 phpmailer类)
简单的php缓存类分享 php缓存机制
discuz加密解密函数使用方法和中文注释
使用php伪造referer的方法 利用referer防止图片盗链
linux系统下php安装mbstring扩展的二种方法
实现PHP多线程异步请求的3种方法
php生成txt文件标题及内容的方法
php ZipArchive压缩函数详解实例
php cURL和Rolling cURL并发方式比较
php中的比较运算符详解
php中读写文件与读写数据库的效率比较分享
使用php判断服务器是否支持Gzip压缩功能
PHP文件去掉PHP注释空格的函数分析(PHP代码压缩)
比较strtr, str_replace和preg_replace三个函数的效率
使用php判断网页是否gzip压缩
解析php addslashes()与addclashes()函数的区别和比较