こんばんは、川合です。
ええと、予告よりも遅れましたが、とにかくbim2bin4kのベータリリ
ースです。
http://k.hideyosi.com/bim2bi4k.lzh (90.7KB)
bim2binのソースもバイナリも無意味に肥大化しています。これは今
までいろいろ実験してきたコードが大量に残っているためです。今はソ
ースの整理よりもtek4の実装を優先しているので、とりあえず今のとこ
ろは見逃してください。
現在、bim2binができることは次のとおりです。
1.stk1形式のエンコード・デコード
2.stk2形式のエンコード・デコード
3.stk3形式のエンコード・デコード
デコード方法は今までどおり
prompt>bim2bin -restore in:圧縮ファイル out:出力ファイル
だけです。ややこしいオプションは全くありません。
念のために説明しておくと、stk1〜stk4というのは、tek1〜tek4のサ
ブセットで、「BS:0かつ補助バッファを使わない」という条件のもので
す。補助バッファを使うとnum128のようなものが差分を使うことで劇的
に小さくなりますが、サブセット版ではそれをサポートしません。
BS:0にすると先頭からしか展開できませんが、まあBSを他の値にする
と圧縮率は落ちてしまいますから、BS:0だけっていうのはそんなに悪く
ない制限です。また補助バッファが使えないのは残念ですが、補助バッ
ファなしでもたいていのものはライバル形式以上に小さくなりますから
サブセットということでは、まあ悪くないでしょう。
stk系を生成するために特別なオプションはありません。普通にtek系
を生成すればいいです。BS:0を忘れずに。
tek1(stk1)での圧縮では、次のオプションが有効です。
-osacmp -tek1 これを忘れずに。
MD: (maxdis:) スライド辞書の最大サイズ。0で最大。
BS: (bsiz:) 現状では常に0。
clv: 圧縮レベル。普通は4でいいでしょう。
in: 圧縮対象ファイル。
out: 出力ファイル。
tek2(stk2)での圧縮では、次のオプションが有効です。
-osacmp -tek2 これを忘れずに。
MD: (maxdis:) スライド辞書の最大サイズ。0で最大。
BS: (bsiz:) 現状では常に0。
clv: 圧縮レベル。普通は4でいいでしょう。
in: 圧縮対象ファイル。
out: 出力ファイル。
tek3(stk3)での圧縮では、次のオプションが有効です。
-osacmp -tek3 これを忘れずに。
MD: (maxdis:) スライド辞書の最大サイズ。0で最大。
BS: (bsiz:) 現状では常に0。
clv: 圧縮レベル。普通は4でいいでしょう。
opt: まだ完成していない最適化ルーチンを助ける
ためのオプションパラメータ指定。
in: 圧縮対象ファイル。
out: 出力ファイル。
optオプションは省略していいですが(省略すると5を指定したと解釈
される)、1から30くらいのあいだで上下させてみると、圧縮率が改善
することがあります。osask.bmpではopt:16が最適で、osaskgoはopt:7
が最適のようでした。
さてこの新tek3ですが、これは旧tek1の改良版で、比べるとこんな感
じになります。
旧tek1 → 新tek3 参考:旧tek2
bim2binc 124.7 → 124.3 121.2
kdun00b 122.0 → 112.8 120.0
osaskgo 120.6 → 119.5 120.1
osaskbmp 136.6 → 129.7 129.2
詳細は http://wiki.osask.jp/?tek1/comp で確認してください。
bim2binc以外では、tek3の段階で旧tek2にかなり迫ったり、超えたり
しています。tek3とtek4との違いは旧tek1と旧tek2との差に等しく、つ
まりtek4ではこのtek3からさらによくなるわけです。しかも予定では、
tek3→tek4の差は、旧tek1→旧tek2の差よりも大きくなります。
僕個人としてはkdun00bの112.8というのがとても気に入っています。
tek3の段階で110台前半が出るとは!・・・全体的な傾向としては、非
テキストなら、tek3だけでlh7やgzipよりも圧縮率がいいです。また、
展開速度については、旧tek1とそう変わりませんので(そもそもアルゴ
リズムもほとんど同じ)、心配していません。
さて、bim2bin4kについてですが、bim2binのほかに、次のものが入っ
ています。
dtk1s0a : stk1の展開ライブラリ(C版)
dtk1s0p : stk1の展開ライブラリ(ASKA版)
dtk2s0d : stk2の展開ライブラリ(C版)
dtk2s0p : stk2の展開ライブラリ(ASKA版)
ASKA版は、ソースがASKAになっているだけで、もちろんC言語からラ
イブラリを利用できます。ASKAがなくても使えるように、アセンブル済
みのオブジェクトファイルも入っています。
不運にもまたtek1/tek2の仕様を変えることがあっても、ライブラリ
のインターフェースを変える気はないので、その点は安心してください
。また、tek1〜tek4全部に対応するフルセットライブラリも、そのうち
作ります(インターフェースはstk1〜stk2のものと基本的に同じです)
。
それでは。
--
川合 秀実(KAWAI Hidemi)
OSASK計画代表 / システム設計開発担当
E-mail:kawai !Atmark! osask.jp
Homepage http://osask.jp/