Comparaison entre les méthodes de compression de chaînes PHP

jacklove
Libérer: 2023-03-31 09:36:01
original
2173 Les gens l'ont consulté

Les méthodes de compression de chaîne fournies par php sont

1.gzcompress — Compresser une chaîne

Cette fonction compresse la chaîne donnée en utilisant le format de données ZLIB

2.gzencode — Créer un gzip. chaîne compressée

Cette fonction renvoie une version compressée des données d'entrée compatible avec la sortie du programme gzip

3.gzdeflate — Dégonfler une chaîne

Cette fonction compresse la chaîne donnée en utilisant le format de données DEFLATE.

4 .bzcompress — compresse une chaîne en données codées en bzip2

bzcompress() compresse la chaîne spécifiée et la renvoie dans les données d'encodage bzip2.

Ce qui suit est une comparaison de compression de ces quatre méthodes, et compresse respectivement les nombres chinois et anglais

<?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;
}
?>
Copier après la connexion

Résultats de l'exécution :

压缩中文比较
原文:布局 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
Copier après la connexion

On peut conclure que

gzcompress a la vitesse la plus rapide Taux de compression rapide et élevé.

gzdeflate a le taux de compression le plus élevé et est légèrement plus lent que gzcompress

gzencode Comparer avec gzdeflate Close, gzdeflate a un léger avantage

bzcompress a la vitesse la plus lente et le taux de compression le plus lent.

Il est donc recommandé d'utiliser gzcompress et gzdeflate.

Cet article explique la comparaison des méthodes de compression de chaînes PHP Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois.

Recommandations associées :

Introduction connexe à la classe de surveillance du temps d'exécution de la page php Timer

Introduction à la méthode du constructeur php prenant en charge différents nombres de paramètres

Comment utiliser PDO pour interroger MySQL sur éviter la méthode d'injection SQL

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!