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

[OSASK 2427] Re: pokon0 の改良.



  こんにちは、川合です。


Koyanagi Masaaki さんは 2001/11/11 11:25:35 の「[OSASK 2423] pok
on0 の改良(Re: pokon0b).」で書きました:

>pokon0 のソース
>http://homepage1.nifty.com/dreaming/osask/pokon0.lzh

  早速みてみました。かなり改良されています。バイナリーもコンパク
トになっていそうです(すみません、まだバイナリーはダウンロードし
ていません)。

>・アルファベットの「大文字」(CAPS LOCK していない状態で Shift + 
>A-Z か CAPS LOCK している状態で A-Z)を入力すると、
>その文字で始まるファイル名に移動します(サーチ機能)。

  これについてですが、294行目の

>        { 'A' /* Insert */,          'Z'-'A',  SIGNAL_ALPHABET },

を

>        { 'A' | 0x00701000,          'Z'-'A',  SIGNAL_ALPHABET },

に変更すれば、大文字小文字の区別をなくせます。・・・と思ったので
すが、もしかしたら小柳さんは、将来OSASKが小文字のファイル名に対
応することも考えて、わざと「大文字」にしたのかもしれません。そう
であれば、この変更はその意志に反するので無視してください。

---

  ついでに少し宣伝です(笑)。

  ここしばらくGendibal/MozaSPについての発言をしてきませんでした
が、もちろん開発はしています。

  実は、フォントファイルがあまりにも大きいのが実にくやしくて、こ
れをどうにかできないものかと考えていたのです。・・・OSASK本体が
とても小さくて、しかもバンドルアプリも100バイト単位でサイズにこ
だわるような指摘をしてきたのに、フォントファイルがいきなり135.79
KBもあったんじゃあ、「なんだかなあ」って感じです。・・・いや、も
しかしたらそう思うのは僕だけかもしれませんが(笑)。

  元になったjpn16$.binですが、これらを各種の圧縮ツールで圧縮する
とこうなるんです。

        jpn16$.bin  無圧縮   249856バイト(100.00%)
        jpn16$.fnt  l2d3     139052バイト( 55.65%)
        jpn16$.lzh  LHA      127838バイト( 51.16%)
        jpn16$.gz   gzip -9  121388バイト( 48.58%)

これをみると、l2d3による圧縮は全然たいしたことありません。まあそ
れもそのはずで、LHAやgzipはおそらくスライド辞書法とハフマン圧縮
を組み合わせているのに対し、l2d3ではスライド辞書法しか使っていま
せん。これは、展開ルーチンが複雑になるのを避けているせいです。

  しかしそれでもlzhとの差は11KB近くもあり、これだけの差を埋める
ためにならOS側がハフマン圧縮展開サポートのせいで数KB大きくなって
も採算が取れるかもしれません。・・・と一時はハフマンを使おうと考
えたのですが、展開ルーチンをASKAで書くのを想像したら気が遠くなり
とりあえずやめました(Cで書けば簡単ですが、多分かなり大きくなっ
てしまいます)。

  l2d3を決めた時は、徹底的に符号化方法を研究したわけではありませ
んでした。それで、まずはそれを1週間くらい研究してみようと思いま
した。・・・そうして昨日、ようやくスライド辞書法のみとしてはかな
りの完成度であろうと思われる「tek0」ができました。まずは、こいつ
の圧縮効率を見てください。

        jpn16$.tek  bim2bin1 -tek0   123713バイト( 49.51%)

数字を見れば明白ですが、LHAに勝っています。ハフマン法を使ってい
ないので展開ルーチンはl2d3と大差ないサイズです(大きくても200バ
イト程度の予定)。gzipにはかないませんでしたが、まあそれはしょう
がないです。gzipとの差は2.27KBでしかなく、ハフマン法を展開ルーチ
ンに入れたらこれくらいはOS側が大きくなってしまうので、かえって妥
当だと思います。

  なお例によって圧縮時間は長いです。いや、圧縮ツールとして本気で
作っているわけではないので、最長一致検索方法が馬鹿みたいなアルゴ
リズムのままになっているんです(笑)。でも、今までよりも遅いとい
うことはありません。同じくらい遅いというだけです。変わったのは符
号化方法だけですから。・・・展開速度は、l2d3とほとんど同じです。

  このtek0は「データー」にはかなり強く、いくつかのテスト(OSASK
のソース圧縮とか)では、LHAを全面的に上回っています。しかし一方
実行ファイルには弱く、LHAに全部負けました。多分実行ファイルを圧
縮するにはハフマン法がかなり有効なのでしょう。

  とにかく、l2d3に対して15KBもフォントファイルを小さくできるとい
う事実は重要です。フロッピーディスクでは、1シリンダーが18KBなの
で、シーク回数が1回減るくらいの効果があるはずです。

  ・・・うーん、なんだか宣伝の方が長くなってしまいました。これじ
ゃあ全然「ついでに少し宣伝」じゃないですね(笑)。

  なお、フォントファイルフォーマットは予定していたとおり変更する
ので、このjpn16$.binが小さくなることそのものはそれほど重要ではあ
りません。上記は単なる一例です。


  それでは。

--
    川合 秀実(KAWAI Hidemi)
川合堂社長 / OSASK計画総指揮 / カーネル開発班
E-mail:kawai !Atmark! imasy.org
Homepage http://www.imasy.org/~kawai/