[Date Prev][Date Next][Thread Prev][Thread Next][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 )