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

Re: let



>> On Tue, 11 May 2004 23:54:12 +0900
>> 「山」== yamaoka@jpl.org (Katsumi Yamaoka) said as follows:

土> ローカル変数の束縛位置をずらしました.

山> 以前 XEmacs のユーザだったとき

なんと! うーん,山岡さんの口からこんな言葉を聞こうとは.

山> `let' is a built-in function

山> というのを見て、let を何回も使うと funcall に伴うオーバヘッドが発
山> 生すると考えて、なるべく一箇所にまとめる癖がついていたんです。特に 
山> while ループの中では絶対に let を使わない、とか。

私の場合,

  (1) なるべくぎりぎり最後まで束縛を待つ.今回の場合だと,

          (let (type)
            (when (looking-at magic-pattern)
              (setq type ...)))

      ならば,looking-at() の結果に関わらず type が束縛されますが,

          (when (looking-at magic-pattern)
            (let ((type ...))
              ...))

      ならば,looking-at() が nil を返した場合は type が束縛されずに済
      む.

  (2) dolist や while で速度が気になる小さいループの場合は外側で束縛す
      る.気にならない場合は,分かり易さを重視して内側で.

山> だけど実はそんなこと気にしなくていいんですかねえ。

えーっと以前,elips ML で似たような話があったような….ふむ,
[Elips:02887] Re: ELP ですね.

>> On 26 May 1999 00:32:25 +0900
>> shuhei@aqua.ocn.ne.jp (Shuhei KOBAYASHI) said as follows:

> let の使用法に限って言えば、一般に、varbind(という bytecode)の実行回
> 数が最小になるのが最速になります。(自明か?)
<snip>
> 外で確保しておいた local variable を毎回 varset する場合(下の例)でも
> そんなに速度は変わらないと思います。つまり、local variable は必要な
> 所でだけ確保するという、一般に好ましいとされる programming style が
> 速度の点でもそんなに悪くないということです。

-- 
土屋 雅稔 ( TSUCHIYA Masatoshi )