ページへ戻る

+ Links

 印刷 

tek1​/oldlog​/001 :: OSASK計画

osaskwiki:tek1/oldlog編集/001

Page Top

tek1の続き anchor.png

  • (by K, 2004.06.23)
  • tek1~tek4の圧縮展開比較表
    • MLに書いたら読みにくくなってきたのでこっちにまとめ
  • (註)tek1~tek3の意味付けが旧版とは違うので、このページの下の説明で確認すること。
    • たくさんの形式があってよく分からない人へ:tek1~tek4は今のところベータ版であり、今理解できないならまだ理解しないほうがいいです。このページは、現在の開発状況を確認するためだけのものです。
      • もし現状を少しでも知りたいということであれば、とりあえずtek4が本命で、それ以外はオマケだという認識でいてください。
Page Top

比較表 anchor.png

  • サイズ (num128以外では、tek1~4とstk1~4はほぼ同じなので、stk1~4は省略)
    無圧縮tek0tek1tek2tek3tek4lh7gzipbzip2LZMALZOrk
    hellok1272128144135126205143166121193208
    zero4k4096272525278649433991100
    zero64k65536282729301171084390422108
    bim2binc5379215019171661632314424141811402912903127871601511608
    kdun00b65536046246498554679441432455204458947306345175214836736
    osaskgo197374111496621274931117234410876731099064111164810474119538211177820909824
    osask.bmp3933346389774071355633646763414906477986184344
    num12813107210695311854812464525542842371311361192
  • 規格化指数
    無圧縮tek0stk1tek1stk2tek2stk3tek3stk4tek4lh7gzipbzip2LZMALZOrk
    hellok1224.8105.8119.0119.0111.6111.6104.1104.1169.4118.2137.2100.0159.5171.9
    zero4k16384108.0100.0100.0100.0100.0108.0108.0344.0196.0172.0156.0364.0400.0
    zero64k242726103.7100.0100.0107.4107.4111.1111.1433.3400.0159.3333.31563400.0
    bim2binc463.4129.4147.9147.9140.6140.6124.3124.3121.7?122.2120.9111.2110.2138.0100.0
    kdun00b1899134.0144.4144.4135.6135.6120.0120.0117.8?131.9129.2137.1100.0151.1106.4
    osaskgo216.9126.4140.1140.1128.9128.9119.5119.5?120.8122.2115.1104.8129.5100.0
    osask.bmp9055147.0178.2178.2164.2164.2129.7129.7120.4?148.9146.0112.9110.0198.4100.0
    num12832768026738329637031161363855210593328402980
    (max)147.0178.2178.2164.2164.2129.7129.7148.9146.0137.1110.2198.4106.4
    • (max)は、bim2binc、kdun00b、osaskgo、osask.bmpのみ対象(他はあまりにtek系が得意なため除外)
    • (max)で判断すると安定して圧縮率のよいものは以下の順になる。
      rkLZMAtek4stk4tek3stk3bzip2gziptek0lh7tek2stk2tek1stk1LZO
      106.4110.2129.7129.7137.1146.0147.0148.9164.2164.2178.2178.2198.4
    • ↑これは主にosask.bmpの結果で決まっているともいえるので、参考までにosask.bmpを除いて集計すると以下のようになる。
      • しかし、「汎用圧縮符号」としては弱点があるというのは好ましくない。そしてosask.bmpの内容は多くの符号の共通の弱点を突く内容なのだろう。
        rkLZMAtek4stk4tek3stk3gziplh7tek0bzip2tek2stk2tek1stk1LZO
        106.4110.2124.3124.3129.2131.9134.0137.1140.6140.6147.8147.8151.1
      • bzip2が落ちてlh7が少し回復する以外は、順位そのものの傾向は変わらない。
  • tar+tek4(.tar.tk/.ttk)
    tarttklh7tgztbztar.lzma
    bim2bi4j266725902616845817274765314
    osat45i759808532093528923547131503545
    cantrbry2821120714769735997568667483768
  • 展開速度
    • 参考:EPIA-VE5000でのosaskgoの展開速度
      meth.deco.timet-idxsizevs rkscore言語備考
      tek10.15[sec]1.01274931140.140.1ASKACでは0.18[sec]
      LZO0.18[sec]1.31177820129.538.4?←おそらくasm
      tek20.18[sec]1.31172344128.937.6ASKACでは0.27[sec]
      tek30.51[sec]4.61087673119.589.7CASKA版開発中
      tek4C
      lh71.04[sec]9.91099064120.8205.9?
      gzip1.24[sec]11.91111684122.2264.2?
      tek01.39[sec]13.41149662126.4353.8C
      LZMA1.42[sec]13.7953821104.865.8C
      bzip22.52[sec]24.71047411115.1373.0?
      GCA4.91[sec]48.61002311110.2495.7?
    • いずれも圧縮データを読み込む時間がデコードタイムに加算されてしまっています。
      • したがって、tek1やLZOは小さくない誤差を含んでいる可能性が高い。
      • 試しに1274931バイトのファイルリードだけやらせてみたら0.05[sec]だった。
    • 「言語」はこの展開速度の測定につかったデコードルーチンの記述言語です。
    • たぶんLZOは既にアセンブラ化されていると思います(そうでないとこの圧縮率でこの速さは出ない)。bzip2はアセンブラ化されているかどうかは僕には想像がつきませんが、ブロックソート法では圧縮率の代償として展開速度低下があるという傾向はつかめると思います。
    • GCA、gzip、lh7に関しては展開ルーチンの記述言語は不明です。
    • t-idx = (time - 0.05) x 10
    • score = (t-idx) x (vs_rk - 100)
      • なんとなく計算してみたくなったので(笑)。小さければ小さいほど圧縮率と展開速度のバランスに優れていることを示していると思う。
    • 補足(履歴)
      • 2004.06.23  tek1~tek3の全面刷新により、いったん出直し。
      • 2004.06.24  tek2の情報を記載
      • 2004.06.26  tek2の情報を改定
      • 2004.06.28  tek3の情報を記載
      • 2004.07.03  kdun00bの規格化指数を計算ミスしていたので修正
Page Top

圧縮形式の説明 anchor.png

  • 無圧縮
  • tek0
    • 引退間近の圧縮形式。今までごくろうさま。旧tek1~3の祖。
  • tek1 --- 全てバイトストリーム、主なライバル:LZO
    • LZOよりも速い展開速度の圧縮形式。圧縮率はやや劣る場合もあるが、得意不得意の差は小さく、その点でLZOよりも扱いやすい(旧tek3の子孫)。
  • tek2 --- ほとんどバイトストリーム・一部ビットストリーム、主なライバル:LZO
    • tek1の7割くらいの展開速度の圧縮形式。圧縮率ではLZOをほぼ完全に凌駕し、展開速度の点ではLZOと同等(旧tek3の子孫)。
  • tek3 --- ほとんどビットストリーム・一部バイトストリーム、主なライバル:tek0
    • tek2のさらに7割くらいの展開速度で、圧縮率を結構追求したもの(旧tek1の子孫)。これはtek0よりも圧縮率がよい。ひょっとすると既にこの段階でlh7よりもいい?
  • tek4 --- 全てビットストリーム、主なライバル:lh7、gzip、bzip2など (デフォルト推奨)
    • tek3のさらに7割くらいの展開速度で、圧縮率をかなり追求したもの(旧tek2の子孫)。lh7やgzipよりも高い圧縮率で、ものによってはLZMAにかなり近い圧縮率になる(予定)。tek1~4の中では一番展開速度が遅いが、それでもtek0やLZMAの2倍くらいは速い。
  • stk1
    • tek1でBS:0かつ補助バッファを使わないもの(subset-tek1)
  • stk2
    • tek2でBS:0かつ補助バッファを使わないもの(subset-tek2)
  • stk3
    • tek3でBS:0かつ補助バッファを使わないもの(subset-tek3)
  • lh7
  • gzip
  • bzip2
  • LZMA
  • LZO
  • rk
  • 展開ルーチンのコンパクトさにこだわる人向けの情報
    • stk1の展開ルーチンは100行(dtk1s.c)
    • stk2の展開ルーチンは161行(dtk2s.c) --- サイズ優先で最適化したら154行になる。
    • stk3の展開ルーチンは401行(dtk3s.c)
    • stk4の展開ルーチンは490行?(dtk4s.c)
    • 展開速度はフルセット版もサブセット版もほぼ同じ
    • (参考)
      • l2d3の展開ルーチンは107行(マルチスレッド非対応)
      • tek0の展開ルーチンは191行(マルチスレッド非対応)
    • C言語の行数で考えるのは、単にC言語がビットストリームを効率よく記述できないという言語の欠陥を示しているだけのような気がしてきたので、ASKAで作った展開ライブラリのバイト数も併記します。これこそまさにアルゴリズムの規模を反映しているといえるでしょう。
      • なおこれでも、どちらかといえばASKA版はサイズよりも展開速度優先で書かれています。
    • stk1の展開ルーチンは270バイト(dtk1s.ask)
    • stk2の展開ルーチンは531バイト(dtk2s.ask)
Page Top

過去ログ anchor.png

Page Top

こめんと欄 anchor.png

  • これだけ見てデコードルーチンの簡単さ、圧縮率を総合評価するとtek0が圧勝じゃない?こんな結果でいいのか? -- 名無しさん 2004-06-24 (木) 17:15:00
  • tek1系のページは議論向きではないので、こういう意見は是非impressionsroom​/000にお願いします。) -- K 2004-06-24 (木) 17:29:36
  • tek1~tek3の名称が展開速度の順で再整理されたってことですよね?(これに関して記事を書くかもしれないので確認) -- Zakky 2004-06-24 (木) 18:41:19
  • はいそうです。このページは数日後にリリースされるbim2bin4の告知の際に投稿するOSASK-MLの内容を(結果的に先取りして)書いています。ここでは詳細なデータばかりでなぜ再整理するのかの理由などがありませんが、それはMLの本文のほうに書く予定なので、ご了承ください。>Zakkyさん -- K 2004-06-24 (木) 19:32:24

Last-modified: 2009-11-21 (土) 00:00:00 (JST) (319d) by ゲスト