首页
手机app
基本信息
到访IP统计
管理团队
管理统计
在线会员
会员排行
版块排行
帖子排行
标签排行
下拉
用户名
电子邮箱
用户名
密 码
记住登录
登录
找回密码
注册
快捷通道
关闭
您还没有登录,快捷通道只有在登录后才能使用。
立即登录
还没有帐号? 赶紧
注册一个
论坛导航
帖子
用户
版块
帖子
搜索
蓝色城市
蓝色天空
zz22zz技术论坛
>
php技术讨论版
>
PHP压缩函数效果比较实践之gzcompress/gzdeflate/gzencode
发帖
回复
返回列表
新帖
投票
5660
阅读
2
回复
PHP压缩函数效果比较实践之gzcompress/gzdeflate/gzencode
[复制链接]
上一主题
下一主题
离线
rickyleo
UID:11
注册时间
2011-06-04
最后登录
2014-02-27
在线时间
165小时
发帖
315
搜Ta的帖子
精华
0
金币
0
威望
99
访问TA的空间
加好友
用道具
技术团队
关闭
个人中心可以申请新版勋章哦
立即申请
知道了
发帖
315
金币
0
威望
99
加关注
发消息
只看楼主
倒序阅读
使用道具
楼主
发表于: 2012-01-11
ThinkPHP提供了debug_start()和debug_end()函数,可以很清楚的看到之间的代码消耗的服务器内存资源和执行时间,为了将效果更加精确将消耗资源单位k改成字节。
网络上一篇文章被转载了N次,见
http://www.baidu.com/s?wd=gzencode+gzcompress&rsv_bp=0&rsv_spt=3&inputT=6328
,说是
gzdeflate压缩效果最好,gzcompress次之,gzencode最差,不过他们是通过strlen来获取长度的,不太确定这个strlen是否靠谱
,所以本地测试了下。
我经过测试后结果表明 gzcompress比gzencode优秀,gzencode比gzdeflate优秀,又看ThinkPHP框架在写缓存前也是用gzcompress先进行压缩数据再保存的。测试结果如下:
复制代码
Process noCompress: Times 0.000044s Memories 1,024 Byte
Process gzdeflate: Times 0.000129s Memories 832 Byte
Process gzcompress: Times 0.000084s Memories 696 Byte
Process gzencode: Times 0.000104s Memories 704 Byte
测试代码如下:
复制代码
<?php
class TestAction extends Action{
public function index(){
debug_start('noCompress');
$str = "待压缩内容待压缩内容待压缩内容待压缩内容待压缩内容待压缩内容待压缩内容待压缩内容待压缩内容待压缩内容待压缩内容待压缩内容";
debug_end('noCompress');
debug_start('gzdeflate');
$str = gzdeflate("待压缩内容待压缩内容待压缩内容待压缩内容待压缩内容待压缩内容待压缩内容待压缩内容待压缩内容待压缩内容待压缩内容待压缩内容", 9);
//gzinflate($data, $length);
debug_end('gzdeflate');
debug_start('gzcompress');
$str = gzcompress("待压缩内容待压缩内容待压缩内容待压缩内容待压缩内容待压缩内容待压缩内容待压缩内容待压缩内容待压缩内容待压缩内容待压缩内容", 9);
//gzuncompress($data, $length);
debug_end('gzcompress');
debug_start('gzencode');
$str = gzencode("待压缩内容待压缩内容待压缩内容待压缩内容待压缩内容待压缩内容待压缩内容待压缩内容待压缩内容待压缩内容待压缩内容待压缩内容", 9);
//gzdecode($data);
debug_end('gzencode');
}
}
if (!function_exists('gzdecode')) {
function gzdecode ($data) {
$flags = ord(substr($data, 3, 1));
$headerlen = 10;
$extralen = 0;
$filenamelen = 0;
if ($flags & 4) {
$extralen = unpack('v' ,substr($data, 10, 2));
$extralen = $extralen[1];
$headerlen += 2 + $extralen;
}
if ($flags & 8) // Filename
$headerlen = strpos($data, chr(0), $headerlen) + 1;
if ($flags & 16) // Comment
$headerlen = strpos($data, chr(0), $headerlen) + 1;
if ($flags & 2) // CRC at end of file
$headerlen += 2;
$unpacked = @gzinflate(substr($data, $headerlen));
if ($unpacked === FALSE)
$unpacked = $data;
return $unpacked;
}
}
?>
共
1
条评分
,
金币
+20
mgarfield
金币
+20
给你个好评哦亲~
2012-01-12
回复
举报
离线
mgarfield
UID:9
注册时间
2011-06-03
最后登录
2012-12-18
在线时间
263小时
发帖
520
搜Ta的帖子
精华
0
金币
0
威望
62
访问TA的空间
加好友
用道具
荣誉会员
发帖
520
金币
0
威望
62
加关注
发消息
只看该作者
沙发
发表于: 2012-01-12
给你个好评哦亲~
共
条评分
回复
举报
离线
mgarfield
UID:9
注册时间
2011-06-03
最后登录
2012-12-18
在线时间
263小时
发帖
520
搜Ta的帖子
精华
0
金币
0
威望
62
访问TA的空间
加好友
用道具
荣誉会员
发帖
520
金币
0
威望
62
加关注
发消息
只看该作者
板凳
发表于: 2012-01-12
最好是在同一个index方法里测试一种压缩效果。时间获取函数可能没那么精确。
共
条评分
回复
举报
发帖
回复
返回列表
快速回复
限100 字节
如果您提交过一次失败了,可以用”恢复数据”来恢复帖子内容
您目前还是游客,请
登录
或
注册
进入高级模式
文字颜色
提到某人:
选择好友
发 布
回复后跳转到最后一页
上一个
下一个
隐藏
快速跳转
站长茶馆
站长小茶馆
程序员吐槽吧
资源分享区
技术交流
php技术讨论版
服务器运维文档
android开发交流
ios开发
phpwind问题互助
phpwind插件制作教程
社区站务
论坛事务
关闭
关闭
选中
1
篇
全选