[mew-dist 22285] Re: accelerating by-folder

Hideyuki SHIRAI ( 白井秀行 ) shirai at example.com
2002年 11月 15日 (金) 16:19:58 JST


From: Kazu Yamamoto (山本和彦) <kazu at example.com> さん曰く
Subject: [mew-dist 22283] Re: accelerating by-folder
Message-ID: <20021115.153959.125106107.kazu at example.com>
Date: Fri, 15 Nov 2002 15:39:59 +0900 (JST)

> > 以前聞いた話だと、扱う list の長さが 10ぐらいまでは mapcar の方
> > が速いけど、それ以上なら while の方が速い、らしいとのことです。
> 
> 最後に添付したコードで実験してみました。
> 
> ----
> Function Name  Call Count  Elapsed Time  Average Time
> =============  ==========  ============  ============
> my-test2       1           0.071404      0.071404
> my-test        1           0.062207      0.062207
> my-while       10          0.07089       0.007089
> my-mapcar      10          0.0617159999  0.0061715999
> ----
> 
> mapcar の方が速いです。でも、誤差なのでメモリー消費量の少ない、while 
> の方が総合的にはよいと思われます。

これの実験は byte-compile する前ですよね?

kazu-* に名前を変えて、ぼくの folder-alist だと、car が大文字で
すぐ終わっちゃうので、鯉江さんのコードで

(setq kazu-alist
      (let ((alist (make-list 2000 '("+foo/foo" . "foo"))))
	(nreverse (cons '("+FOO/foo" . "foo") alist))))

に対して実行すると、(最初から while の方がちょっと速いですが)

Emacs-21.3.50 byte-compile 前
Function Name  Call Count  Elapsed Time  Average Time
=============  ==========  ============  ============
kazu-test      1           0.419782      0.419782
kazu-test2     1           0.357072      0.357072
kazu-mapcar    10          0.4193099999  0.0419309999
kazu-while     10          0.3567439999  0.0356743999

Emacs-21.3.50 byte-compile 後
Function Name  Call Count  Elapsed Time  Average Time
=============  ==========  ============  ============
kazu-test      1           0.221415      0.221415
kazu-test2     1           0.104153      0.104153
kazu-mapcar    10          0.221128      0.0221128
kazu-while     10          0.103865      0.0103865

Emacs の version とかで全然結果は違うと思いますが、2倍以上速度が
違います。mapcar の方が関数呼び出しが多いし、byte-compile すると
while は展開されるから、という理由だと思います。

> しかしながら、IMAP などのことも考えると、mew-local-folder-alist だけを
> 検査するのでは不十分だと分ったので、やっぱり mew-use-fast-refile を手
> で設定してもらうことにします。

こちらそれで問題ないのですけど、気になったので実験だけしました。

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



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