From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: vincent.belaiche@gmail.com.?= (Vincent =?UTF-8?Q?Bela=C3=AFche) Newsgroups: gmane.emacs.bugs,gmane.emacs.pretest.bugs,gmane.emacs.devel Subject: bug#4407: 23.1.50; Re: Recentf cleanup optmization Date: Fri, 11 Sep 2009 21:49:15 +0200 Message-ID: <87my51l0sk.fsf@gmail.com> Reply-To: Vincent =?UTF-8?Q?Bela=C3=AFche , ?=.4407@emacsbugs.donarmstrong.com NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Trace: ger.gmane.org 1252738024 10929 80.91.229.12 (12 Sep 2009 06:47:04 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Sat, 12 Sep 2009 06:47:04 +0000 (UTC) Cc: emacs-devel@gnu.org To: emacs-pretest-bug@gnu.org, monnier@IRO.UMontreal.CA Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Sat Sep 12 08:46:57 2009 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.50) id 1MmMNs-0008RK-Fr for geb-bug-gnu-emacs@m.gmane.org; Sat, 12 Sep 2009 08:46:56 +0200 Original-Received: from localhost ([127.0.0.1]:48001 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1MmMNr-0006SW-QW for geb-bug-gnu-emacs@m.gmane.org; Sat, 12 Sep 2009 02:46:55 -0400 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1MmCOh-0005BI-Mb for bug-gnu-emacs@gnu.org; Fri, 11 Sep 2009 16:07:07 -0400 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1MmCOc-0005B4-P1 for bug-gnu-emacs@gnu.org; Fri, 11 Sep 2009 16:07:06 -0400 Original-Received: from [199.232.76.173] (port=55320 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1MmCOc-0005B1-FG for bug-gnu-emacs@gnu.org; Fri, 11 Sep 2009 16:07:02 -0400 Original-Received: from rzlab.ucr.edu ([138.23.92.77]:54672) by monty-python.gnu.org with esmtps (TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1MmCOb-0004Cw-RI for bug-gnu-emacs@gnu.org; Fri, 11 Sep 2009 16:07:02 -0400 Original-Received: from rzlab.ucr.edu (rzlab.ucr.edu [127.0.0.1]) by rzlab.ucr.edu (8.14.3/8.14.3/Debian-5) with ESMTP id n8BK6x5x017941; Fri, 11 Sep 2009 13:06:59 -0700 Original-Received: (from debbugs@localhost) by rzlab.ucr.edu (8.14.3/8.14.3/Submit) id n8BJt5W3015408; Fri, 11 Sep 2009 12:55:05 -0700 Resent-Date: Fri, 11 Sep 2009 12:55:05 -0700 X-Loop: owner@emacsbugs.donarmstrong.com Resent-From: vincent.belaiche@gmail.com.?= (Vincent =?UTF-8?Q?Bela=C3=AFche) Resent-To: bug-submit-list@donarmstrong.com Resent-CC: Emacs Bugs 2Resent-Date: Fri, 11 Sep 2009 19:55:05 +0000 Resent-Message-ID: Resent-Sender: owner@emacsbugs.donarmstrong.com X-Emacs-PR-Message: report 4407 X-Emacs-PR-Package: emacs X-Emacs-PR-Keywords: Original-Received: via spool by submit@emacsbugs.donarmstrong.com id=B.125269842814201 (code B ref -1); Fri, 11 Sep 2009 19:55:05 +0000 Original-Received: (at submit) by emacsbugs.donarmstrong.com; 11 Sep 2009 19:47:08 +0000 X-Spam-Bayes: score:0.5 Bayes not run. spammytokens:Tokens not available. hammytokens:Tokens not available. Original-Received: from fencepost.gnu.org (fencepost.gnu.org [140.186.70.10]) by rzlab.ucr.edu (8.14.3/8.14.3/Debian-5) with ESMTP id n8BJl68B014198 for ; Fri, 11 Sep 2009 12:47:07 -0700 Original-Received: from mx10.gnu.org ([199.232.76.166]:55049) by fencepost.gnu.org with esmtp (Exim 4.67) (envelope-from ) id 1MmC5J-0002w7-F0 for emacs-pretest-bug@gnu.org; Fri, 11 Sep 2009 15:47:05 -0400 Original-Received: from Debian-exim by monty-python.gnu.org with spam-scanned (Exim 4.60) (envelope-from ) id 1MmC5I-0001Dy-C6 for emacs-pretest-bug@gnu.org; Fri, 11 Sep 2009 15:47:05 -0400 Original-Received: from smtp20.orange.fr ([80.12.242.26]:58655) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1MmC5H-0001DY-Ss; Fri, 11 Sep 2009 15:47:04 -0400 Original-Received: from me-wanadoo.net (localhost [127.0.0.1]) by mwinf2018.orange.fr (SMTP Server) with ESMTP id 1677E20000AC; Fri, 11 Sep 2009 21:47:02 +0200 (CEST) Original-Received: from me-wanadoo.net (localhost [127.0.0.1]) by mwinf2018.orange.fr (SMTP Server) with ESMTP id 0096620000A7; Fri, 11 Sep 2009 21:47:01 +0200 (CEST) Original-Received: from COCOTTE (ARennes-256-1-116-144.w90-32.abo.wanadoo.fr [90.32.115.144]) by mwinf2018.orange.fr (SMTP Server) with ESMTP id 63B8220000AC; Fri, 11 Sep 2009 21:47:01 +0200 (CEST) X-ME-UUID: 20090911194701408.63B8220000AC@mwinf2018.orange.fr X-detected-operating-system: by monty-python.gnu.org: Genre and OS details not recognized. X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6 (newer, 2) Resent-Date: Fri, 11 Sep 2009 16:07:06 -0400 X-Mailman-Approved-At: Sat, 12 Sep 2009 02:46:49 -0400 X-BeenThere: bug-gnu-emacs@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:30999 gmane.emacs.pretest.bugs:25050 gmane.emacs.devel:115218 Archived-At: --=-=-= Content-Disposition: inline Dear Stefan, I've tried now to follow as strictly as possible the instruction from info node "(emacs) Sending Patches". * Explanation of change: function `recentf-cleanup' can be very slow when the recentf-max-saved-items is significant, e.g. 60 items. This is due to this that duplicate items are removed with a iterative search (which means that cleanup is made in quadratic time). The change consists in using a search based on a hash table, so that the cleanup is in linear time. Function impacted are function `recentf-cleanup' and a new function `recentf-string-key' is created. * patch made with diff -c is attached. file [d:/msys/temp/recentf.el Fri Sep 11 19:41:51 2009] is download from CVS, and file [recentf.el Wed Sep 2 16:34:04 2009] is the modified one. --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=recentf.el.diff Content-Description: Patch to recentf.el *** recentf.el Wed Sep 2 16:34:04 2009 --- d:/msys/temp/recentf.el Fri Sep 11 19:41:51 2009 *************** *** 310,322 **** (string-equal (downcase s1) (downcase s2)) (string-equal s1 s2))) - (defsubst recentf-string-key (s) - "Return a string that is used for `recentf-string-equal' or - `recentf-string-lessp' comparisons. " - (if recentf-case-fold-search - (downcase s) s)) - - (defsubst recentf-string-lessp (s1 s2) "Return non-nil if string S1 is less than S2 in lexicographic order. Ignore case if `recentf-case-fold-search' is non-nil." --- 310,315 ---- *************** *** 1314,1334 **** That is, remove duplicates, non-kept, and excluded files." (interactive) (message "Cleaning up the recentf list...") ! (let ((n 0) ! newlist ! hk ! (ht (make-hash-table ! :size recentf-max-saved-items ! :test 'equal))) (dolist (f recentf-list) ! (setq f (recentf-expand-file-name f) ! hk (recentf-string-key f)) (if (and (recentf-include-p f) (recentf-keep-p f) ! (not (gethash hk ht))) ! (progn ! (push f newlist) ! (puthash hk t ht)) (setq n (1+ n)) (message "File %s removed from the recentf list" f))) (message "Cleaning up the recentf list...done (%d removed)" n) --- 1307,1319 ---- That is, remove duplicates, non-kept, and excluded files." (interactive) (message "Cleaning up the recentf list...") ! (let ((n 0) newlist) (dolist (f recentf-list) ! (setq f (recentf-expand-file-name f)) (if (and (recentf-include-p f) (recentf-keep-p f) ! (not (recentf-string-member f newlist))) ! (push f newlist) (setq n (1+ n)) (message "File %s removed from the recentf list" f))) (message "Cleaning up the recentf list...done (%d removed)" n) --=-=-= Content-Disposition: inline In GNU Emacs 23.1.50.1 (i386-mingw-nt5.0.2195) of 2009-07-25 on COCOTTE Windowing system distributor `Microsoft Corp.', version 5.0.2195 configured using `configure --with-gcc (3.4)' Important settings: value of $LC_ALL: nil value of $LC_COLLATE: nil value of $LC_CTYPE: nil value of $LC_MESSAGES: nil value of $LC_MONETARY: nil value of $LC_NUMERIC: nil value of $LC_TIME: nil value of $LANG: FRA value of $XMODIFIERS: nil locale-coding-system: cp1252 default-enable-multibyte-characters: t Major mode: Info Minor modes in effect: shell-dirtrack-mode: t recentf-mode: t mail-abbrevs-mode: t iswitchb-mode: t tooltip-mode: t mouse-wheel-mode: t menu-bar-mode: t file-name-shadow-mode: t global-font-lock-mode: t font-lock-mode: t blink-cursor-mode: t global-auto-composition-mode: t auto-composition-mode: t auto-encryption-mode: t auto-compression-mode: t line-number-mode: t transient-mark-mode: t Recent input: ) ) M-q s SPC o n SPC a SPC h a s h SPC t a b l e , s SPC o SPC SPC s o SPC t h a t SPC t h e SPC c l e a n u p SPC i s SPC i n SPC q u a d r a l i n e a r SPC t i m e . SPC F u n c t i o n SPC i m p a c t e d SPC a r e SPC f u n c t i o n C-SPC SPC ` C-y SPC a n d SPC C-x o C-s C-s C-a C-s c l e a n C-w C-s C-s C-s C-s C-s C-s C-s C-s C-s C-s C-s C-w C-w C-s C-s C-s C-s C-SPC C-x o a SPC n e w SPC f u n c t i o n SPC C-y ` ' SPC i s SPC c r e a t e d . C-x o C-x C-h i M-x b u g - r e p o r t C-a M-d b u g e m Recent messages: Mark set [4 times] Auto-saving...done Mark set Mark saved where search started Auto-saving...done Mark set [2 times] Mark saved where search started [3 times] Mark set [2 times] Making completion list... iswitchb-read-buffer: Command attempted to use minibuffer while in minibuffer Load-path shadows: d:/Programme/GNU/emacs-extension/cedet/common/ezimage hides d:/Programme/GNU/Emacs/lisp/ezimage c:/Documents and Settings/Vincent/Application Data/.emacs.d/etc/custom hides d:/Programme/GNU/Emacs/lisp/custom --=-=-=--