- (by K, 2004.06.15)
- tek1~tek3の圧縮展開比較表
- MLに書いたら読みにくくなってきたのでこっちにまとめ
比較表
- サイズ
無圧縮 | tek0 | tek1 | tek2 | tek3 | stk1 | stk2 | stk3 | lh7 | gzip | bzip2 | LZMA | LZO | rk |
hellok1 | 272 | 128 | 125 | 124 | 145 | 125 | 124 | 145 | 205 | 143 | 166 | 121 | 193 | 208 |
zero4k | 4096 | 27 | 26 | 25 | 26 | 26 | 25 | 26 | 86 | 49 | 43 | 39 | 91 | 100 |
zero64k | 65536 | 28 | 28 | 27 | 28 | 28 | 27 | 28 | 117 | 108 | 43 | 90 | 422 | 108 |
bim2binc | 53792 | 15019 | 14475 | 14067 | 17229 | 14475 | 14067 | 17229 | 14181 | 14029 | 12903 | 12787 | 16015 | 11608 |
kdun00b | 655360 | 46246 | 42098 | 41412 | 49993 | 42098 | 41412 | 49993 | 45520 | 44589 | 47306 | 34517 | 52148 | 36736 |
osaskgo | 1973741 | 1149662 | 1097405 | 1092517 | 1318722 | 1097405 | 1092517 | 1318722 | 1099064 | 1111648 | 1047411 | 953821 | 1177820 | 909824 |
osask.bmp | 393334 | 6389 | 5934 | 5612 | 8190 | 5934 | 5612 | 8190 | 6467 | 6341 | 4906 | 4779 | 8618 | 4344 |
num128 | 131072 | 106953 | (40前後) | (40前後) | 40 | 94278 | (94276) | 131603 | 118548 | 124645 | 25542 | 84237 | 131136 | 1192 |
- 規格化指数
無圧縮 | tek0 | tek1 | tek2 | tek3 | stk1 | stk2 | stk3 | lh7 | gzip | bzip2 | LZMA | LZO | rk |
hellok1 | 224.8 | 105.8 | 103.3 | 102.5 | 119.8 | 103.3 | 102.5 | 119.8 | 169.4 | 118.2 | 137.2 | 100.0 | 159.5 | 171.9 |
zero4k | 16384 | 108.0 | 104.0 | 100.0 | 104.0 | 104.0 | 100.0 | 104.0 | 344.0 | 196.0 | 172.0 | 156.0 | 364.0 | 400.0 |
zero64k | 242726 | 103.7 | 103.7 | 100.0 | 103.7 | 103.7 | 100.0 | 103.7 | 433.3 | 400.0 | 159.3 | 333.3 | 1563 | 400.0 |
bim2binc | 463.4 | 129.4 | 124.7 | 121.2 | 148.4 | 124.7 | 121.2 | 148.4 | 122.2 | 120.9 | 111.2 | 110.2 | 138.0 | 100.0 |
kdun00b | 1899 | 134.0 | 122.0 | 120.0 | 144.8 | 122.0 | 120.0 | 144.8 | 131.9 | 129.2 | 137.1 | 100.0 | 151.1 | 106.4 |
osaskgo | 216.9 | 126.4 | 120.6 | 120.1 | 144.9 | 120.6 | 120.1 | 144.9 | 120.8 | 122.2 | 115.1 | 104.8 | 129.5 | 100.0 |
osask.bmp | 9055 | 147.0 | 136.6 | 129.2 | 188.5 | 136.6 | 129.2 | 188.5 | 148.9 | 146.0 | 112.9 | 110.0 | 198.4 | 100.0 |
num128 | 327680 | 267383 | 100.0 | 235695 | (235690) | 329008 | 296370 | 311613 | 63855 | 210593 | 32840 | 2980 |
(max) | 147.0 | 136.6 | 129.2 | 188.5 | 136.6 | 129.2 | 188.5 | 148.9 | 146.0 | 137.1 | 110.2 | 198.4 | 106.4 |
- (max)は、bim2binc、kdun00b、osaskgo、osask.bmpのみ対象(他はあまりにtek系が得意なため除外)
- (max)で判断すると安定して圧縮率のよいものは以下の順になる。
rk | LZMA | tek2 | stk2 | tek1 | stk1 | bzip2 | gzip | tek0 | lh7 | tek3 | stk3 | LZO |
106.4 | 110.2 | 129.2 | 129.2 | 136.6 | 136.6 | 137.1 | 146.0 | 147.0 | 148.9 | 188.5 | 188.5 | 198.4 |
- ↑これは主にosask.bmpの結果で決まっているともいえるので、参考までにosask.bmpを除いて集計すると以下のようになる。
- しかし、「汎用圧縮符号」としては弱点があるというのは好ましくない。そしてosask.bmpの内容は多くの符号の共通の弱点を突く内容なのだろう。
rk | LZMA | tek2 | stk2 | tek1 | stk1 | gzip | lh7 | tek0 | bzip2 | tek3 | stk3 | LZO |
106.4 | 110.2 | 121.2 | 121.1 | 124.7 | 124.7 | 129.2 | 131.9 | 134.0 | 137.1 | 148.4 | 148.4 | 151.1 |
- bzip2が落ちてlh7が少し回復する以外は、順位そのものの傾向は変わらない。
- tar+tek2(.tar.tk/.ttk)
tar | ttk | lh7 | tgz | tbz | tar.lzma |
bim2bi4j | 266725 | 70030 | 90266 | 84581 | 72747 | 65314 |
osat45i | 759808 | 528582 | 532093 | 528923 | 547131 | 503545 |
cantrbry | 2821120 | 708236 | 714769 | 735997 | 568667 | 483768 |
- ディスクイメージへの強さが、tarへの強さにつながったのかも?
- ロングファイルネーム対応のSF16ができるまで.img.tk(.itk)は不便だろうから、とりあえず.tar.tk(.ttk)で。
- cantrbryはよく分からないけど有名な圧縮対象のようです。
- 展開速度
- 参考:EPIA-VE5000でのosaskgoの展開速度
meth. | deco.time | size | vs rk | score | score2 | 言語 | 備考 |
tek3 | 0.15[sec] | 1315527 | 144.6 | 4.5 | 21.7 | ASKA | Cでは0.22[sec] |
LZO | 0.18[sec] | 1177820 | 129.5 | 3.8 | 23.3 | ? | ←おそらくasm |
tek1 | 0.58[sec] | 1097475 | 120.6 | 10.9 | 69.9 | C | ASKAは0.52[sec]以下 |
tek2 | 0.76[sec] | 1092517 | 120.1 | 14.3 | 91.3 | C | ASKAは0.69[sec]以下 |
lh7 | 1.04[sec] | 1099064 | 120.8 | 20.6 | ? |
gzip | 1.24[sec] | 1111684 | 122.2 | 26.4 | ? |
tek0 | 1.39[sec] | 1149662 | 126.4 | 35.4 | 175.7 | C |
LZMA | 1.42[sec] | 953821 | 104.8 | 6.6 | 148.8 | C |
bzip2 | 2.52[sec] | 1047411 | 115.1 | 37.3 | 290.1 | ? |
GCA | 4.91[sec] | 1002311 | 110.2 | 49.6 | ? |
- いずれも圧縮データを読み込む時間がデコードタイムに加算されてしまっています。
- したがって、tek3やLZOは小さくない誤差を含んでいる可能性が高い。
- 試しに1315527バイトのファイルリードだけやらせてみたら0.05[sec]だった。
- 「言語」はこの展開速度の測定につかったデコードルーチンの記述言語です。
- tek系についてはASKAで動かすのがメインなので、実用上はC版の1.5~2倍に上がります(アセンブラ版のライブラリパッケージも用意する予定)。
- たぶんLZOは既にアセンブラ化されていると思います(そうでないとこの圧縮率でこの速さは出ない)。bzip2はアセンブラ化されているかどうかは僕には想像がつきませんが、ブロックソート法では圧縮率の代償として展開速度低下があるという傾向はつかめると思います。
- GCA、gzip、lh7に関しては展開ルーチンの記述言語は不明です。
- score = (time - 0.05) x (vs_rk - 100)
- なんとなく計算してみたくなったので(笑)。小さければ小さいほど圧縮率と展開速度のバランスに優れていることを示していると思う。
- score2 = time x vs_rk
- scoreの指標がどれくらい実感に近いのかを確認するために計算した参考値。この指標で比較するとrkでの圧縮率に影響されないが、この指標ではあんなにがんばっているLZMAがtek2に劣ることになってしまう。これはいくらなんでも圧縮率の評価が弱すぎるわけだ。
- 補足(履歴)
- 2004.06.20 tek1のC言語版展開ルーチンを改良(0.75[sec]→0.58[sec])
- 2004.06.20 tek2のC言語版展開ルーチンを改良(0.82[sec]→0.76[sec])
圧縮形式の説明
- 無圧縮
- tek0
- tek1
- tek2
- tek3
- stk1
- tek1でBS:0かつ補助バッファを使わないもの(subset-tek1)
- stk2
- tek2でBS:0かつ補助バッファを使わないもの(subset-tek2)
- stk3
- tek3でBS:0かつ補助バッファを使わないもの(subset-tek3)
- lh7
- gzip
- bzip2
- LZMA
- LZO
- rk
- 展開ルーチンのコンパクトさにこだわる人向けの情報
- stk3の展開ルーチンは135行(dtk3s.c)
- stk1/stk2の展開ルーチンセットは582行(dtk2s.c)
- tek1/tek2/tek3のフルセット展開ルーチンセットは1009行(dtkf.c)
- 展開速度はフルセット版もサブセット版もほぼ同じ
こめんと欄
Last-modified: 2009-11-21 (土) 00:00:00 (JST) (319d) by ゲスト