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

Is shimbun-servers.el required? (was:shimbun-additional-servers-list に簡単に追加する方法 )



>> On Fri, 25 Jul 2003 12:51:55 +0900
>> 「大」== bg66@koka-in.org (OHASHI Akira) said as follows:

大> えっと、私は「全てを元に戻せ」と言っているのではなくて、
大> shimbun-servers-list を生成するのは今のままにしておいて、
大> shimbun-additional-servers-list も半自動的に生成させられたら便利だ
大> なと言っているのです。

ああ,すみません.大場さんの問題提起とは少し異なる議論に踏み込んでしまっ
ていました.表題を変えます.

大場さんの指摘をきっかけとして,私が提起している問題は「滅多に呼び出さ
れないと思われる shimbun-servers-list() のためだけに,静的に生成される
ファイルを作ってまで高速化を追求する意味はあるのでしょうか? もっと 
simple にした方がいいんじゃないでしょうか?」という問題です.

shimbun-servers.el が導入された背景には,[emacs-w3m:04619] での

>> On Tue, 04 Feb 2003 11:03:13 +0900
>> 「山」== yamaoka@jpl.org (Katsumi Yamaoka) said as follows:

山> nnshimbun.el の gnus-group-make-shimbun-group() では毎回
山> directory-files でサーバーとグループのリストを作っているので少しだ
山> け待たされるのですが、make 時に作っておけば楽になりますね。

という指摘があるだろうと思うのですが,実際にどの程度待たされるのか実験
してみました.

(progn
  (load-library "shimbun-servers")
  (defvar shimbun-additional-backend-path nil)
  (defun shimbun-servers-list-as-function ()
    (let (servers)
      (dolist (dir (nconc
                    (list (file-name-directory (locate-library "shimbun"))
                          (file-name-directory (locate-library "w3m")))
                    shimbun-additional-backend-path))
        (when (file-directory-p dir)
          (dolist (file (directory-files dir nil nil t))
            (when (and (string-match "\\`sb-\\(.*\\)\\.el\\'" file)
                       (not (member (setq file (match-string 1 file))
                                    '("fml" "glimpse" "lump"
                                      "mailarc" "mailman"
                                      "mhonarc" "text"))))
              (push file servers)))))
      servers))
  (byte-compile 'shimbun-servers-list)
  (byte-compile 'shimbun-servers-list-as-function)
  (require 'elp)
  (elp-reset-all)
  (elp-instrument-list '(shimbun-servers-list-as-function shimbun-servers-list))
  (dotimes (x 100)
    (shimbun-servers-list-as-function)
    (shimbun-servers-list))
  (elp-results))

結果は以下の通りです.

Function Name                     Call Count  Elapsed Time  Average Time
================================  ==========  ============  ============
shimbun-servers-list-as-function  100         2.4430750000  0.0244307500
shimbun-servers-list              100         0.287327      0.00287327

という結果が得られました.確かに,関数版の方が1桁遅いのは事実ですが,1 
回あたりの呼び出しにかかっている時間は,わずかに 0.02 秒です.NFS で提
供されている低速の home directory 上で実験して,この結果ですから,よっ
ぽどのことがなければ1秒もかからないはずだと思います.

ちなみに,load-path 全検索(= (length load-path) 107)にすると 0.11 秒に
増えました.これなら,「ちょっと待たされる」と感じるかも知れません.

というわけで,shimbun-servers.el そのものを消してしまってもいいんじゃ
ないかと思うのですが,いかがでしょうか?

-- 
土屋 雅稔 ( TSUCHIYA Masatoshi )