四大壓縮函數簡介
| 函數 | 格式 | 解壓對應 |
gzcompress | ZLIB | gzuncompress |
gzencode | GZIP | gzdecode (PHP≥5.4) |
gzdeflate | DEFLATE | gzinflate |
bzcompress | BZIP2 | bzdecompress |
基準測試代碼
<?php
$str1 = '布局 1 介紹 布局,簡單來說就是設置元素的大小和位置...'; // 中文測試串
$str2 = '!@#$%^&*()QWERTYUIOPSDFGHJKL...'; // 英數混合測試串
function compress_comp($str, $num) {
$funcs = ['gzcompress', 'gzencode', 'gzdeflate', 'bzcompress'];
echo '原文大小: ' . strlen($str) . "<br><br>";
foreach ($funcs as $fn) {
$start = microtime(true);
for ($j = 0; $j < $num; $j++) {
switch ($fn) {
case 'gzcompress': $mstr = gzcompress($str, 9); break;
case 'gzencode': $mstr = gzencode($str, 9); break;
case 'gzdeflate': $mstr = gzdeflate($str, 9); break;
case 'bzcompress': $mstr = bzcompress($str, 9); break;
}
}
$end = microtime(true);
echo "$fn 壓縮後大小: " . strlen($mstr) . " 耗時: " . round(($end - $start) * 1000, 5) . "ms<br><br>";
}
}
compress_comp($str1, 1000);
compress_comp($str2, 1000);
?>
典型結果趨勢 (供參考)
- 壓縮率:bzcompress > gzcompress ≈ gzencode > gzdeflate
- 速度:gzdeflate > gzcompress ≈ gzencode > bzcompress
- 中文文本:壓縮率顯著高於英數混合
- 選型建議:追求速度用
gzdeflate;需 GZIP 相容用 gzencode;極致壓縮率用 bzcompress (CPU 密集)