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

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



佐野@浜松です。

In <200205200710.QAA15790@pon.nintendo.co.jp>,
 on "Mon, 20 May 2002 16:10:40 +0900",
 with "[FDclone-users:00009] Re: terminal keycode settings",
  Takashi SHIRAI <shirai@nintendo.co.jp> wrote:

>  [ は一般に外部コマンドなので fork & exec する分 cost が高
> くつきます。fdsh 等最近の shell だと builtin で用意されてい
> ますが、statement だけで処理出来る case の方が若干負荷が軽く
> なります。

>  但し、[ の文字列比較が単純な strcmp() であるのに対し、case
> の文字列比較には wildcard が使えますので、この wildcard が異
> 常に複雑になった場合はこの限りではありませんが。
> 
>  今回のケースですと、if と [ を 3 回ずつ呼ぶのと比べて case
> だと 1 回で済みますし、複雑な wildcard matching も必要なさそ
> うなので、多分 case の方が軽くて済みます。

なるほど。内部コマンドの場合でも条件分岐の回数が少ないほうが
有利ということですね。

>  これで構わないと思います。関数でまとめるほどの量でもないん
> じゃないかとは思いますけどね。
>  case には fallthru の枠組が無いし、複数の pattern に match
> しても最初の一つしか実行されないので、case の枠組だけでまと
> めるのは多分無理だと思います。
> 
>  後は、shell 変数を配列的に用いて eval で廻すという手もある
> でしょうけど、見通しが悪くなるばかりで余りメリットは無いでし
> ょう。
>  今回のような用途では、if + [ を case に変えるだけで十分だ
> と思いますよ。

ありがとうございます。「見た目」で同じ処理が続いているのが
ちょっとカッコ悪いなぁと思い、fd のマニュアルページを読んだら
 function も使えるということがわかったので、「こりゃ便利!」と
試しに使ってみた次第です。

別件の bug 修正で Debian パッケージを更新するので、その時に
合わせてこちらの修正も入れておきます。

-- 
  Taketoshi Sano: <sano@debian.org>,<sano@debian.or.jp>,<kgh12351@nifty.ne.jp>