[Subject Prev][Subject Next][Thread Prev][Thread Next][Subject Index][Thread Index]

[OSASK 1206] Re: LZW




  こんばんは、Myurikaです。


  N-H さんにいただいた [OSASK 1203] Re: LZW へのお返事です。

>Myurikaさん、こんにちわ。おひさしです。

  ども、お久しぶりです。

>Myurika>   もちろん、辞書を使わない分、劇的と言えるほどに速度は低下するであろうと
>Myurika> 思われます。しかし、さほど使われるわけではない画像データの展開という用途
>Myurika> であること、昨今はハードウェアの速度が上がっていることなどを考えると、あ
>Myurika> まり問題がないのかもしれません。
>Myurika> # 判る人は少ないでしょうがARTemisのSave/Loadほどではないにしろ、近いぐら
>Myurika> い遅くなるはず。
>その作者のプラグイン使ってみましたが、劇的ってほど遅くはならない
>みたいです。
>#確かに1テンポ遅れるような感じはしましたが、気にならないレベルかと。

  はい、最近の…、いや最近でなくても、ここ3年ぐらいのマシンなら全く気にな
らないレベルでしょう。なにせ、デコード後にせいぜい300KB程度のデータが相手
なのですから。

  せっかくですから、いかに遅くなっているかというサンプルを。
  実は、もう既存のTIFFデコーダを元に、そのアルゴリズムを使ったものを作っ
てるんです(笑)。

  TOWNSのHigh CにくっついてくるTIFFデコーダとの速度比較によるベンチマーク
しかなかったので、それによる結果なので、最高/最低のデータが同じファイルに
基づくとは限りません。よって、アベレージしか信頼できないと思ってください。
  あと、エンコーダのデータも出てますが、こっちはいじってないので、誤差が
どの程度かの「ものさし」にしてもらえれば。

  元々のLZWデコーダによるものでは、
Result.               average   maximum   minimum
LIB load:TIFFL = 100:  69.7692, 100.0000,  38.7084
LIB save:TIFFS = 100:  65.8203,  79.4860,  44.8242
  と、最悪同程度の速度が出ており、平均7割程度の速度になっています。
  相手がアセンブラで書かれたデコーダであることを考えると、結構いいデキで
はないでしょうか(笑)。

  辞書テーブルを使わない方法をTIFFのLZWに応用して、単純に作った場合、
Result.               average   maximum   minimum
LIB load:TIFFL = 100: 260.5285,1692.5903,  89.3615
LIB save:TIFFS = 100:  66.3452,  77.4963,  46.0632
  となりました。最悪で17倍、平均でも2.5倍という体たらくです。

  仕方ないので、できうる限りの高速化を施すと、
Result.               average   maximum   minimum
LIB load:TIFFL = 100: 177.8808,1035.4797,  79.9987
LIB save:TIFFS = 100:  64.7888,  78.7475,  43.9514
  なんとか平均で2倍を切れるようになりました。

  しかし、これは平均で2.5倍ほど、普通のLZWに対して劣っている、ということ
です。元々の処理が一瞬なら、せいぜい数瞬にしかならないのですが、1秒かかっ
ていたら2.5秒に、10秒なら25秒になってしまいます。
  OSASKがターゲットにしているのかどうかはともかく、386機なんかではこの遅
さが「劇的」と言えるのも判ってもらえるんじゃないでしょうか。


  それでは。

| Myurika (尾藤主和) myurika !Atmark! pop06.odn.ne.jp |