[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[FDclone-users:00009] Re: terminal keycode settings
- Subject: [FDclone-users:00009] Re: terminal keycode settings
- From: Takashi SHIRAI <shirai@nintendo.co.jp>
- Date: Mon, 20 May 2002 16:10:40 +0900
しらいです。
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 に変えるだけで十分だ
と思いますよ。
しらい たかし