15

gzcompress(json_encode($ arr)、9)で配列を圧縮しています。だから私はjson_encodeで配列を文字列に変換してからgzcompressで圧縮しています。しかし、結果の文字列のサイズに大きな違いは見つかりませんでした。圧縮前のサイズは488KB、圧縮後のサイズは442KBです。

文字列をさらに圧縮する方法はありますか?

前もって感謝します。

4

2 に答える 2

24

数値が正しいかどうかわかりません。出力に6バイトを追加する代わりに使用できます(gzdeflate最初に2バイト、最後に4バイト追加)。gzcompressgzcompress

簡単なテストでは、2倍に圧縮して99バイトに圧縮された1756800の長さの文字列を示しています。一度圧縮すると、5164バイトになります。

$string = str_repeat('1234567890' . implode('', range('a', 'z')), 48800);

echo strlen($string); //1756800 bytes

$compressed = gzdeflate($string,  9);
$compressed = gzdeflate($compressed, 9);

echo strlen($compressed); //99 bytes

echo gzinflate(gzinflate($compressed));
于 2012-06-12T06:08:06.363 に答える
18

文字列の圧縮がどの程度適切になるかは、圧縮するデータによって異なります。主にランダムデータで構成されている場合、サイズをそれほど改善することはできません。特定の使用法のために設計された多くのアルゴリズムがあります。

圧縮するデータが主に何で構成されているかを判断してから、適切な圧縮を選択する必要があります。

ちょうど今、私はあなたにbzcompressを紹介することしかできません、bzipは通常gzipよりも高い圧縮率を持っています。

于 2012-06-12T05:44:20.240 に答える