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