php自带压缩方法的性能比较

时间:2021-10-15 00:17:36

在保存一些数据到redis中的时候,如果数据量非常大,无疑会占用过多的服务器内存,影响服务器性能,这时我们不妨先压缩后再写入到redis中

读取内容的时候,可以先解压然后再使用。压缩的方法是php提供的,一个是bzcompress()方法,一个是gzcompress()方法,那么哪一个更优秀呢?

我们来测试一下,以下是php代码:

<?php
header('Content-Type:text/html; charset=utf-8');

$input = file_get_contents('/tmp/debug.log');
echo '内容长度:'.strlen($input);
echo '<br/>';

$start_time = microtime(TRUE);

$input_compressed  = bzcompress($input,6);

echo 'after compressing,time interval:'.(microtime(TRUE)-$start_time).', length:', strlen($input_compressed).'<br/>';


$input_uncompressed = bzdecompress($input_compressed);
echo 'after uncompressing,length:'.strlen($input_uncompressed).'<br/>';



$start_time = microtime(TRUE);
$input_compressed  = gzcompress($input,6);
echo 'after compressing,time interval:'.(microtime(TRUE)-$start_time).', length:', strlen($input_compressed).'<br/>';


$input_uncompressed = gzuncompress($input_compressed);
echo 'after uncompressing,length:'.strlen($input_uncompressed).'<br/>';


执行之后,结果如下,debug.log文件有11M的内容:


内容长度:11190138

after compressing,time interval:1.1139051914215, length:359866

after uncompressing,length:11190138

after compressing,time interval:0.19483304023743, length:872131

after uncompressing,length:11190138


可以看到,压缩时间上是bzcompress()耗时多,gzcompress更优秀一些。

但是压缩效果上,bzcompress()会更好一些,因为压缩之后的内容更少一些。