[Namazu-devel-ja 272] Re: syscmd 試作

Tadamasa Teranishi yw3t-trns @ asahi-net.or.jp
2004年 10月 13日 (水) 16:34:32 JST


寺西です。

NOKUBI Takatsugu wrote:
> 
> > ところで、Compress/Zlib.pm は perl 標準モジュールなのでしょうか?
> > 手元の環境には入っていないみたいですが。
>
>   perl本体には付属していません。zlibに依存しているので、標準に含めるに
> は面倒が多そうだから入っていないのだと思います。

たぶん、古い IRIX で昔はまったのは、Compress/Zlib.pm じゃなかったかと
思います。

>   gzip.plでgzipコマンドとモジュールの両方に対応しているのは、当時
> Compress::Zlibを扱うことに興味をもっていたのでたまたま実装しただけ、と
> いうのが真相です。きちんと計測したわけではないのですが、Compress::Zlib
> を用いるコードではスカラ変数にデータを持っているので、おそらくメモリ効
> 率がよくないのではないかと思います。

解凍前と解凍後の全データをオンメモリで処理するであろうと予測できる
ので、非常に大きなファイルの場合は辛いかもしれません。

とは言え、$FILE_SIZE_MAX の上限できちんと切る処理ができているのなら、
問題になることは少ないかと思います。
(昨日の HEAD では読み込んでからエラーになっていましたが。)

Compress/Zlib.pm に解凍前に解凍後のデータサイズを取得する手段が
用意されているかどうかわかりませんが、事前にチェックできるのなら、
$FILE_SIZE_MAX で処理を中断することも可能でしょう。

# 処理速度はどちらが速いかわかりませんが。どちらも別のオーバーヘッド
# がありそうですから。
 
>   compressで圧縮されたデータ自体は、gzip(gzcat)でも展開できます。なの
> でGNU/Linux環境でははzcatにもhardlinkされることが多いです。

そうですね。手元の Linux も compress/uncompress コマンドがなくて、
時代の流れを感じています。(gzip で代用できるので困りませんけれども。)

HEAD はフィルタの選択できる機能が入っていますので、Compress/Zlib.pm
を使った別フィルタを compress.pl, gzip.pl から分離して用意し、
選択して使うというのが将来的には良いのではないでしょうか。
Perl モジュールを優先して使うか、外部コマンド版を優先して使うかを
利用者が選択できるようになります。
また、デバッグも楽になります。
-- 
=====================================================================
寺西 忠勝(TADAMASA TERANISHI)  yw3t-trns @ asahi-net.or.jp
http://www.asahi-net.or.jp/~yw3t-trns/index.htm
Key fingerprint =  474E 4D93 8E97 11F6 662D  8A42 17F5 52F4 10E7 D14E




Namazu-devel-ja メーリングリストの案内