首頁  >  文章  >  後端開發  >  關於php 字串壓縮方法之間的比較

關於php 字串壓縮方法之間的比較

jacklove
jacklove原創
2018-06-09 14:14:392113瀏覽

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

速度最慢,壓縮比率最慢。 因此建議使用

gzcompress

gzdeflate本篇文章解釋了php 字串壓縮方法比較 ,更多相關內容請關注php中文網。

相關推薦:

關於php Timer 頁面執行時間監測類別的相關介紹


關於php 建構子支援不同個數參數的方法介紹


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

以上是關於php 字串壓縮方法之間的比較的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn