[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[FDclone-users:00009] Re: terminal keycode settings



 しらいです。

In Message-Id <20020518092453J.kgh12351@kgh12351.nifty.ne.jp>
        Taketoshi Sano <sano@debian.org>さんwrites:
> 佐野@浜松です。

>  FDclone 2.01 の Debian パッケージを作成しましたが、
> その中でシステム設定ファイル (/etc/fdclone/fd2rc) に
> 以下のような記述を書いたところ、白井さんから [ で
> 書くより case を使ったほうがいいですよというアドバイスを
> 受け、こちらに相談することにしました。

 [ は一般に外部コマンドなので fork & exec する分 cost が高
くつきます。fdsh 等最近の shell だと builtin で用意されてい
ますが、statement だけで処理出来る case の方が若干負荷が軽く
なります。
 但し、[ の文字列比較が単純な strcmp() であるのに対し、case
の文字列比較には wildcard が使えますので、この wildcard が異
常に複雑になった場合はこの限りではありませんが。

 今回のケースですと、if と [ を 3 回ずつ呼ぶのと比べて case
だと 1 回で済みますし、複雑な wildcard matching も必要なさそ
うなので、多分 case の方が軽くて済みます。


>  xterm と kterm では共通する部分も多いので、
> これらをうまくまとめられると良いのですが。

 それは考え過ぎじゃないでしょうか。text source や memory 消
費量はまとめることによって若干軽減されるでしょうけど、処理速
度はむしろ遅くなるかも知れませんね。


> こんな感じでいかがでしょう ? 
> もっと良い方法があればよろしくお願いします。

 これで構わないと思います。関数でまとめるほどの量でもないん
じゃないかとは思いますけどね。
 case には fallthru の枠組が無いし、複数の pattern に match
しても最初の一つしか実行されないので、case の枠組だけでまと
めるのは多分無理だと思います。

 後は、shell 変数を配列的に用いて eval で廻すという手もある
でしょうけど、見通しが悪くなるばかりで余りメリットは無いでし
ょう。
 今回のような用途では、if + [ を case に変えるだけで十分だ
と思いますよ。

                                               しらい たかし