0

特定のロスレス圧縮アルゴリズムを使用してファイルを圧縮する場合、実行時間や結果の圧縮率をどのように予測できますか? ローカル圧縮の時間と圧縮率がわかれば、現在利用可能なネットワーク スループットに基づいてネットワーク圧縮の時間を簡単に計算できるため、特にローカル圧縮に関心があります。

サイズ、冗長性、タイプなど、ファイルに関する情報があるとします (単純にするためにテキストと言えます)。おそらく、実際の以前の測定からの統計データがいくつかあります。実行時間や圧縮率の予測を実行するには、他に何が必要でしょうか (非常に大まかなものであっても)。

ローカル圧縮だけでは、ファイルのサイズが影響します。これは、ストレージ メディア (SD カード、ハード ドライブ) との間で実際にデータを読み書きすることが、実行全体のより多くの部分を占めるためです。

ほとんどの圧縮アルゴリズムはデータの小さなブロック (100kb 程度) を圧縮することで機能するため、実際の圧縮部分はおそらく冗長性/タイプに依存します。たとえば、大きな HTML/Javascript ファイルは冗長性が高いため、圧縮率が高くなります。

スケジュールの問題もあると思いますが、おおよその目安としては無視していいでしょう。

これは、私の頭の中にある静かな質問です。オーバーヘッドの少ないコード (サーバー上など) が、実際の圧縮を実行する前にファイルを圧縮するのにかかる時間を予測できるかどうか疑問に思っていましたか?

4

3 に答える 3

1

ランダムな場所から 10 ~ 100 個の小さな断片を採取して、ファイルをサンプリングします。個別に圧縮します。これにより、圧縮率の下限が得られます。

これは、チャンクが小さすぎない場合にのみ意味のある結果を返します。圧縮アルゴリズムは、特定のサイズの履歴を利用して次のバイトを予測できる必要があります。

于 2014-10-25T17:56:12.180 に答える
0

圧縮率は、次の式で計算できます。

http://geekresearchlab.net/mtechproject/content/public/upload/5_2_o.jpg

また、パフォーマンスのベンチマークは、V8 または Sunspider を使用して実行できます。

DEFLATE や LZMA などのアルゴリズムを使用してメカニズムを計算することもできます。予測には PPM (Partial by Predicting Matching) を使用できます。

于 2014-10-27T17:56:15.703 に答える