[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 メーリングリストの案内