ページへ戻る

+ Links

 印刷 

why_sar :: OSASK計画

osaskwiki:why_sar

sarアーカイブ形式の紹介 anchor.png

  • (by K, 2004.10.19)
  • (註)
    • このページは、OSASKなどをsar形式で公開するときに「sar形式についてはこちら」でリンクされる予定のページです(OSASK ver.4.7からはOSASKの一般公開版は、sarとlzhの両方で公開されます)。
    • 他のかたでも、sarで公開したものがあって、でもsarについて説明するのが面倒だったりした場合は、このページへのリンクをしていただいて構いません。
  • sar形式は、lzhやzipやtar.gzなどのような、書庫形式の一つです。
  • 展開には「えんやこらsar」を使います(Windowsの場合)。
    • えんやこらsar ver.0.06 のダウンロード: http://www.vector.co.jp/soft/win95/util/se355121.html
    • 使い方:
      • インストールしたらenyasar.exeができますので、解凍したいsarアーカイブをドラック&ドロップしてください。
      • 展開に関する設定をしたいとき(展開場所など)は、enyasar.exeをダブルクリックで起動してください。設定画面が出ます。
      • 拡張子sarにenyasar.exeを関連付けさせる場合は次のようにします。まずいきなり適当なsarアーカイブをダブルクリックして「ファイルを開くアプリケーションの選択」ウィンドウを出させて、「その他」ボタンを押してenyasar.exeを選び、「これらのファイルを開くときは、いつもこのアプリケーションを使う」にチェックをつけたままでOKを押してください。これで以降はsarアーカイブをダブルクリックするだけで展開されます。
  • UNIX系OSユーザのための展開ツールもあります。
    • http://user.ecc.u-tokyo.ac.jp/~t40370/osask/index.html のページの「sartol0i for Linux」(2004.11.11)を使います。(リンク切れ)
      • 現在このパッケージを再配布しています。 → http://osask.jp/files/ の一番下の、 itak_sartol0i-linux.tar.gz です。
    • 必要なのはこの中のsartolとsarshです。両方をパスの通ったところに置いておき、
      $ sarsh xf a.sar -C destdir
    • とすると、destdirにa.sarの内容が展開されます。
Page Top

なぜsar形式で配布するのか anchor.png

  • 多くの人は、こんな面倒な形式で配布などせずに、すなおにzipやlzhで配布すればいいじゃないかと思うでしょう。これには理由があります。
  • sar形式は多くの場合でtek圧縮と組み合わされて配布されますが、これによりアーカイブがとても小さくなります。また展開も高速に行われます。
  • もともとsarやtekというフォーマットを作ることになったのは、KがOSASKやKHBIOSで標準的にサポートする圧縮形式を決めるにあたって、既存のアーカイブ形式に強い不満を感じたからです。これらは圧縮率が良くなかったり、どんなにプログラムで工夫しても展開を速くできないようになっていたりしました(これは根底の圧縮アルゴリズムに原因があるのでどうしようもない)。
  • 常識的な議論として、圧縮率が高い形式は展開時間が長くかかります。逆に展開時間が短いものは、圧縮率があまりよくありません。それは圧縮率を上げるために高度なアルゴリズムを使っているからなので、傾向としては当然のことです。
  • しかし同じくらいの圧縮率なのに展開が他のものよりも速い形式というのがあります。もしくは同じくらいの展開速度なのに圧縮率が他よりも良い形式です。そういう形式こそ、真に価値ある形式だとKは考えます。もちろん展開速度というものは展開プログラムをうまく作るかどうかで大きく左右されるものですが、どんなにうまく作っても圧縮形式(圧縮アルゴリズム)による限界があるのです。圧縮率が同程度なら、その限界速度が速い形式こそ、圧縮形式としては良い形式ではないでしょうか。
  • 他の観点もあります。それは展開作業のためにたくさんのメモリを要しないことです。実用的な展開速度のためには大量の作業用メモリが必要、という形式がありますが、そういうものはメモリが少ない環境での展開が絶望的になります(メモリが少ない環境というのは、たいてい利用可能なCPUの処理能力もそれほど大きくはないので、展開速度が落ちるのは致命的)。自分だけが自分のPCで使う場合は問題がないのですが、不特定多数の人にファイルを渡す場合や将来携帯用端末で使うときなどにはこれが問題になり、結果的に負の資産になる可能性もあります。
  • もちろん、多少のエラーを自動的に修復できることや、暗号化機能を持ったもの、アーカイブファイル分割機能の有無、OSでの標準サポート、それよりなにより使いやすいツール群が揃っていることなどこそ、使いやすいアーカイブ形式に求められる条件だという観点もあります。それはそのとおりです。エラー修復や暗号化や分割機能は、sar形式でも当初より対応を検討していて、かつそのための拡張に速やかに対応できるように準備をしてあります。OSでのサポートやツールの充実は、ユーザが増えれば自然に充実していくことでしょう。
  • 現在では実に多くのアーカイブ形式が開発されています。しかし圧縮率の割には展開速度が遅いような、そんな形式でCD-RやDVDにバックアップとして残していくべきでしょうか。今までのぶんはしょうがないと思いますが、これからはもっと積極的にどの形式が良いかを考えて、もし使いにくいという問題があれば、使いやすくなるようにツールを充実させていくべきだとKは思います。その意思の反映として、sar形式での配布を行っているというわけです。
  • 「これからはコンピュータはもっともっと速くなる、メモリだってジャブジャブつかっていい、だからとにかく圧縮率にこそこだわるべきだ」という人には、PAQARがおすすめです。でもKはその意見には賛成ではないので、PAQ形式での配布は予定していません。
  • 「これからはハードディスクがもっと大容量化して、光ディスクもどんどん大容量化して、ネットワークだって途方もなく速くなるはずだから、圧縮なんて不要だ」という人は、是非無圧縮で暮らしてください。でもKはこの意見にも賛成ではないので、無圧縮形式での配布は予定していません。配布されているsarアーカイブを展開して保存したのちに、アーカイブを捨てればいいと思います。
Page Top

ベンチマーク anchor.png

  • いくつかのアーカイブ形式について、圧縮能力の例を示します。
    lzhziptar.gztar.bz2yz2cabrardgcLZMAsarPPMdpaq
    osat45i532093524182522146546988549599516276519615529568503290498125527052465714
    sartol0g466864617244175432024631541508401154164839861390143740432802
    make46438752413707398232302464289643263085260959248784241575238116216140168127
  • 以下は上記の結果について、paqの結果を100として相対指標化したものです。こちらのほうが比較がしやすいです。
    lzhziptar.gztar.bz2yz2cabrardgcLZMAsarPPMdpaq
    osat45i114.3112.6112.1117.5118.0110.9111.6113.7108.1107.0113.2100.0
    sartol0g142.3140.8134.7131.7141.2126.5122.3127.0121.5118.9114.0100.0
    make46261.0246.1236.9179.9172.3156.5155.2148.0143.7141.6128.6100.0
    展開作業域8KB未満8KB未満8KB未満2.3MB数MB以上16KB未満不明不明28KB32KB194MB120MB
    • sar形式ではtek5圧縮を使っています。
    • lzhはlh7形式です。
    • yz2は最終版とみられるalpha6です。
    • dgcはDGCA 1.06です。
    • LZMAは7zのデフォルト形式です。
    • PPMdは7zのものを使っています。
    • paqはPAQAR v1.3でオプション-5を使っています(今はもっとバージョンが進んでいるようです)。
    • LZのスライド辞書用のための領域は展開結果と兼ねられるので、展開作業域にはカウントしていません(出力バッファを上回る遠方の辞書参照をディスクアクセスなどで参照しても、極端な速度低下がないと思われるため)。
    • lzh, zip, gzの展開作業域は8KB未満としていますが、詳細はよく分かりません(静的ハフマンのためにどのくらいが必要なのか詳細不明)。たぶんもっと小さいです。
    • dgcの展開作業域は不明ですが、おそらくブロックソート系なので、bz2と同程度はありそうな気がします。
    • PPMdは非常に得意不得意があるアルゴリズムで、ここでもその傾向がよく出ています(テキストに強いといわれている)。その能力を発揮させるには展開作業領域がたくさん必要になりますが、圧縮率を犠牲にすれば減らすこともできます。たとえばmake46でsar+tek5より若干劣る圧縮率にしてもいいのなら、26MBに減らせます。
    • 個人的な見解ですが、どんな環境ででも展開できるべきだという観点から、PC向け以外にも配慮した汎用的で理想的な圧縮形式としては、作業領域は1MB未満、できれば64KB未満が好ましいと、Kは考えております。
    • yz2は圧縮・展開速度が速いことで有名な形式です。圧縮速度は本当に速いです。しかし展開速度はtek5よりも遅かったです(C版の展開ルーチンと比べてやっとおなじくらい)。
    • rarはWinRAR 3.30で、最高圧縮&ソリッドでやりました。リカバリレコードなどのサイズ増加要因は全てオフにしてあります。
    • cabはLZX:21形式です。展開作業領域の詳細は調べていませんが、zip等よりもハフマンを多用するので少し多めに見積もりました。
Page Top

こめんと欄 anchor.png

  • まずは、はじめまして。でもって本題ですが上記の「えんやこらsar」がリンク切れのようです。確認をお願い致します。 -- Babel 2008-03-20 (木) 20:06:50
  • 確かに切れていたのでリンクを直しました。 -- K 2008-03-20 (木) 22:51:35
  • 有難うございます。お手数をおかけしました。 -- Babel 2008-03-21 (金) 21:32:35

Last-modified: 2009-11-17 (火) 00:00:00 (JST) (319d) by k-tan