[Mew-dist 15734] Re: profile
Kazu Yamamoto ( 山本和彦 )
kazu at example.com
2001年 1月 6日 (土) 10:32:46 JST
From: Kazu Yamamoto (山本和彦) <kazu at example.com>
Subject: [Mew-dist 15733] profile
> Mew の起動が遅いので、Emacs でも XEMacs でも動くよう profile を作り、
> 測ったところ、Addrbook が悪いと判明しました。確かに、
> mew-addrbook-setup をコメントアウトすると、劇的に速くなります。
と言うわけで、mew-uniq-alist が遅いことを突き止めました。O(N^2) ですね。
O(N) にしたら、劇的に速くなりました。幸せ。
--かず
Index: mew-func.el
===================================================================
RCS file: /usr/home/kazu/cvsroot/Mew/mew/mew-func.el,v
retrieving revision 1.180
diff -c -r1.180 mew-func.el
*** mew-func.el 2001/01/04 14:37:35 1.180
--- mew-func.el 2001/01/06 01:33:22
***************
*** 65,74 ****
lst)
(defun mew-uniq-alist (alst)
! "Distractively uniqfy elements of ALST."
! (let ((tmp alst))
! (while tmp (setq tmp (setcdr tmp (mew-delete (car (car tmp)) (cdr tmp))))))
! alst)
(defun mew-delete (key alist)
"Destructively delete elements whose first member is equal to key"
--- 65,80 ----
lst)
(defun mew-uniq-alist (alst)
! (let ((vec (make-vector 511 0))
! a ret)
! (while alst
! (setq a (car alst))
! (setq alst (cdr alst))
! (if (intern-soft (car a) vec)
! ()
! (setq ret (cons a ret))
! (intern (car a) vec)))
! (nreverse ret)))
(defun mew-delete (key alist)
"Destructively delete elements whose first member is equal to key"
Mew-dist メーリングリストの案内