[Mew-dist 15310] Re: thread

Hideyuki SHIRAI ( 白井秀行 ) shirai at example.com
2000年 12月 7日 (木) 09:18:21 JST


From: Shun-ichi TAHARA (田原 俊一) <jado at example.com> さん曰く
Subject: [Mew-dist 15305] Re: thread
Message-ID: <20001206.165348.1015308241.z1980163 at example.com>
Date: Wed, 6 Dec 2000 16:53:50 +0900

> From: Hideyuki SHIRAI (白井秀行) <shirai at example.com>
> Message-Id: <20001206.153412.34995080.shirai at example.com>
> 
> > とりあえず、できるだけ減らしてみました。
> 
> なるほど、こんなの(あらかじめprefixをconcatする)もありですね。
> # これだと、スレッドの底で1回余計にconcatが出るけど (^^;

# ありゃ ^^;

現在の thread がどこまで耐えられるか実験してみました。

    1  12/06 13:43  4k To:mew-dist at example.com      [Mew-dist 15301] Re: thread
    2  12/06 13:43  4k ┗To:mew-dist at example.com      [Mew-dist 15301] Re: thread
    3  12/06 13:43  4k  ┗To:mew-dist at example.com      [Mew-dist 15301] Re: thread
    4  12/06 13:43  4k   ┗To:mew-dist at example.com      [Mew-dist 15301] Re: thread
  ....

と 500個ほど子供をつくって、max-specpdl-size => 1000 という条件
で、Meadow-1.13b1(Emacs-20.6) で実験しました。

・fancy-thread (改造後) => 73 まで表示
・normal-thread => 86 まで表示
・mew-summary-thread-print() をちょっとだけ改造 => 95 まで表示
   (cld をなくしただけ)

ひとつ bind する変数を減らしただけで結構効くものなのですね。

で、ど〜んと (setq max-specpdl-size 10000) にしたら、今度は
max-lisp-eval-depth のエラー。とりあえず 1200 にして 500通、全部
OK となりました ^^;;;

> > 私も以前、 semi-gnus ML 辺りでそういう
> > 目にあったので、再帰呼び出しは使わないようにして回避しています。
> 
> > 描画すべきものをlist に保持する(スタックする)ことで回避可能です。
> > ループのおしりで以下のような操作を入れて、
> > 1スレッドの全ての行の描画を同一関数内で行なうようにしています。
> 
> なるほど。
> 面倒ですが、お決まりといえばお決まりのパターンですね。

というわけで、再帰呼び出しのままだと、やっぱりなにかしらよろしく
ないですね。という話でした。

-- 
白井秀行 (mailto:shirai at example.com)



Mew-dist メーリングリストの案内