[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 |