From: Nelson Ferreira <nelson.ferreira@verizon.net>
Cc: emacs-devel@gnu.org
Subject: Re: [PATCH] Load spam-stat hashtable only when there are changes in the disk file
Date: Sun, 05 Dec 2004 16:41:44 -0500 [thread overview]
Message-ID: <m3wtvwmnhj.fsf@tuxie.homelinux.net> (raw)
In-Reply-To: m3acssofaj.fsf@tuxie.homelinux.net
[-- Attachment #1: Type: text/plain, Size: 567 bytes --]
"Nelson" == Nelson Ferreira <nelson.ferreira@verizon.net> writes:
Nelson> This patch prevents spam-stat from doing unnecessary loads
Nelson> of the hashtable to memory.
Nelson> 2004-12-05 Nelson Ferreira <nelson.ferreira@ieee.org>
Nelson> * spam-stat.el (spam-stat-save): Load the hashtable from
Nelson> disk only
Nelson> if there is no hashtable in memory or file
Nelson> modification time is newer than cached timestamp.
My coding-system settings made the ChangeLog diff to ruin the
iso-2022-7 coding. Here is a correct patch.
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: Load spam-stat hashtable only when there are changes in the disk file --]
[-- Type: text/x-patch, Size: 2872 bytes --]
Index: lisp/ChangeLog
===================================================================
RCS file: /usr/local/cvsroot/gnus/lisp/ChangeLog,v
retrieving revision 7.554
diff -u -u -b -r7.554 ChangeLog
--- lisp/ChangeLog 3 Dec 2004 15:58:17 -0000 7.554
+++ lisp/ChangeLog 5 Dec 2004 21:40:55 -0000
@@ -1,3 +1,9 @@
+2004-12-05 Nelson Ferreira <nelson.ferreira@ieee.org>
+
+ * spam-stat.el (spam-stat-save): Load the hashtable from disk only
+ if there is no hashtable in memory or file modification time is
+ newer than cached timestamp.
+
2004-12-03 Reiner Steib <Reiner.Steib@gmx.de>
* gnus-sum.el (gnus-summary-limit-to-recipient): Implement
Index: lisp/spam-stat.el
===================================================================
RCS file: /usr/local/cvsroot/gnus/lisp/spam-stat.el,v
retrieving revision 7.19
diff -u -u -b -r7.19 spam-stat.el
--- lisp/spam-stat.el 2 Nov 2004 02:54:22 -0000 7.19
+++ lisp/spam-stat.el 5 Dec 2004 21:40:55 -0000
@@ -186,6 +186,9 @@
this filter, re-training spam-stat with several thousand messages
will start to take a very long time.")
+(defvar spam-stat-last-saved-at nil
+ "Time stamp of last change of spam-stat-file on this run")
+
(defvar spam-stat-syntax-table
(let ((table (copy-syntax-table text-mode-syntax-table)))
(modify-syntax-entry ?- "w" table)
@@ -389,6 +392,7 @@
(interactive "P")
(when (or force spam-stat-dirty)
(let ((coding-system-for-write spam-stat-coding-system))
+ (message "Saving %s..." spam-stat-file)
(with-temp-file spam-stat-file
(let ((standard-output (current-buffer))
(font-lock-maximum-size 0))
@@ -401,14 +405,25 @@
(spam-stat-bad entry))))
spam-stat)
(insert ")))"))))
- (setq spam-stat-dirty nil)))
+ (message "Saved %s." spam-stat-file)
+ (setq spam-stat-dirty nil
+ spam-stat-last-saved-at (nth 5 (file-attributes spam-stat-file)))))
(defun spam-stat-load ()
"Read the `spam-stat' hash table from disk."
;; TODO: maybe we should warn the user if spam-stat-dirty is t?
(let ((coding-system-for-read spam-stat-coding-system))
- (load-file spam-stat-file))
- (setq spam-stat-dirty nil))
+ (cond (spam-stat-dirty (message "Spam stat not loaded: spam-stat-dirty t"))
+ ((or (not (boundp 'spam-stat-last-saved-at))
+ (null spam-stat-last-saved-at)
+ (not (equal spam-stat-last-saved-at
+ (nth 5 (file-attributes spam-stat-file)))))
+ (progn
+ (load-file spam-stat-file)
+ (setq spam-stat-dirty nil
+ spam-stat-last-saved-at
+ (nth 5 (file-attributes spam-stat-file)))))
+ (t (message "Spam stat file not loaded: no change in disk..")))))
(defun spam-stat-to-hash-table (entries)
"Turn list ENTRIES into a hash table and store as `spam-stat'.
[-- Attachment #3: Type: text/plain, Size: 22 bytes --]
--
Nelson Ferreira
prev parent reply other threads:[~2004-12-05 21:41 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-12-05 16:55 [PATCH] Load spam-stat hashtable only when there are changes in the disk file Nelson Ferreira
2004-12-05 21:41 ` Nelson Ferreira [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=m3wtvwmnhj.fsf@tuxie.homelinux.net \
--to=nelson.ferreira@verizon.net \
--cc=emacs-devel@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.