Rumah  >  Artikel  >  pembangunan bahagian belakang  >  关于php 字符串压缩方法之间的比较

关于php 字符串压缩方法之间的比较

jacklove
jackloveasal
2018-06-09 14:14:392169semak imbas

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

因此建议使用 gzcompressgzdeflate

本篇文章讲解了php 字符串压缩方法比较 ,更多相关内容请关注php中文网。

相关推荐:

关于php Timer 页面运行时间监测类的相关介绍

关于php 构造函数支持不同个数参数的方法介绍

如何使用PDO查询mysql避免SQL注入的方法

Atas ialah kandungan terperinci 关于php 字符串压缩方法之间的比较. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn