- ベストアンサー
compressについて
いつもお世話になっております。 素朴な疑問なのですが、compressでファイルを圧縮すると肥大してしまうことがあるのですがなぜなのでしょうか? 教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
もともと情報量が大きい割りにサイズが小さいファイル (言い換えれば圧縮率が低いファイル) を圧縮すると圧縮によるオーバーヘッドが加わり大きくなってしまうことがあります。 また、compress は Unix でよく使われている gzip や bzip2 などと比べてもかなり圧縮率が悪いのでそういう傾向は出やすい思います。 ちなみに、compress は速度面でも gzip よりも遅いためか Solaris 7 からは高速な zip (Info-ZIP) が標準インストールされるようになり、主として使用されるようになりました。
その他の回答 (2)
- pchan0022000
- ベストアンサー率42% (112/261)
アルゴリズムの問題じゃないでしょうか。 もっとも簡単な圧縮の原理は連続するデータを、記号化する事にあります。 たとえば単純に文字列を、文字と連続回数に変換するアルゴリズムの場合。 AAAAA→A5 3バイト圧縮 A→A1 1バイト肥大 となります。 普及してる圧縮アルゴリズムなら肥大する事はそうそうないと思いますが。 JPEG、GIF等のすでに圧縮されているファイルをさらに圧縮しようとすると肥大する可能性はあると思います。
お礼
回答ありがとう御座います。 わかり易い説明でした。
- foobar
- ベストアンサー率44% (1423/3185)
元のファイルが既にデータ圧縮が行なわれている場合(例えばjpeg形式の画像ファイルなど)には、compressなどにより付帯情報がつく分ファイルサイズが大きくなることはあったかと思います。 (元のファイルよりサイズが大きくなった場合には、元のファイルを残して、compressした一時ファイルのコピーをしない、というような挙動をしたような記憶があるのですが、違ってましたっけ?)
お礼
回答ありがとう御座います。 >(元のファイルよりサイズが大きくなった場合には、元のファイルを残して、compressした一時ファイルのコピーをしない、というような挙動をしたような記憶があるのですが、違ってましたっけ?) オプションで-fと記述すると、元のファイルより肥大してしまっても強制的にcompressを実施します。
お礼
回答ありがとう御座います。 compressよりgzipの方が遅い気がします。 gzipの方が圧縮率は高いですね。本来の圧縮処理を 優先にしていますので、gzipを試してみようかと思います。 ありがとう御座います。