Bill Wohler
2016-01-18 05:43:18 UTC
- **status**: unread --> open
---
** [bugs:#259] inc slow with large inbox**
**Status:** open
**Milestone:** mh-e-7.4.3
**Created:** Mon Dec 26, 2011 09:42 PM UTC by Bill Wohler
**Last Updated:** Mon Aug 18, 2014 11:35 AM UTC
**Owner:** nobody
To: mh-e-users at lists.sourceforge.net
Subject: Re: slow 'inc' in MH-E, fast in shell
X-Mailer: MH-E 7.4.3; nmh 1.0.4; GNU Emacs 21.3.1
From: Eric Jensen <jensen at astro.swarthmore.edu>
Date: Thu, 26 Aug 2004 14:11:28 -0400
Message-Id: <***@hven.astro.swarthmore.edu>
Hi Bill et al.,
Thanks for the speedy reply.
I think I have part of the answer to why my 'inc' is so slow in MH-E,
though not all of it. The short answer: too many messages in +inbox.
first message to be shown. If it's HTML, it'll have to get processed,
which does take some time for me too \(I use w3m.el\). If the message is
HUGE, it'll take some time for that too. Send yourself a small ASCII
message and inc that. If that's fast, it's in the render. If that's
slow, oh boy.
No, it's clearly not the HTML rendering \(which does take a little time,
as you say\). The delay happens even if the show buffer is toggled off,
or if the current message is plain ASCII.
files. But, I think I have a clue to the problem from looking at the
simpler stack trace from using the compiled files:
Debugger entered--Lisp error: \(quit\)
jit-lock-after-change\(97767 97767 1\)
delete-char\(1\)
mh-notate\(nil 32 5\)
mh-remove-all-notation\(\)
mh-get-new-mail\(nil\)
mh-inc-folder\(nil nil\)
call-interactively\(mh-inc-folder\)
Am I correct that that "mh-remove-all-notation" has to do something with
every message in the +inbox buffer?
Now for the self-incrimination; here's where my bad e-mail habits come
to light. I currently have 6703 messages in +inbox. If I rescan the
folder with a limited range of messages \(say less than 1000\) then the
'inc' returns quite quickly. But if I have scan lines from all the
messages in there, then the 'inc' takes 8-10 seconds \(on an old 400 MHz
Pentium II, faster on a newer machine\). I've been meaning to clean out
that folder anyway, but perhaps you could let me know if my diagnosis is
correct. If so, is there any way to run some of the de-annotation or
re-annotation in the background? \(I'll clean out my folder in any case,
but I've noticed in the new version of emacs that, e.g., font-locking
doesn't always happen in real-time, which is nice not having to wait for
it to complete.\)
friendly help on this list, and for MH-E itself.
Eric
\----
Here's the full stack trace:
Debugger entered--Lisp error: \(quit\)
\(save-excursion \(beginning-of-line\) \(cond \(... ...\) \(error-if-no-message ...\) \(t nil\)\)\)
mh-get-msg-num\(t\)
\(let \(\(msg ...\)\) \(mh-notate nil 32 mh-cmd-note\) \(mh-remove-sequence-notation msg nil t\)\)
\(progn \(let \(...\) \(mh-notate nil 32 mh-cmd-note\) \(mh-remove-sequence-notation msg nil t\)\)\)
\(if \(looking-at mh-scan-valid-regexp\) \(progn \(let ... ... ...\)\)\)
\(when \(looking-at mh-scan-valid-regexp\) \(let \(...\) \(mh-notate nil 32 mh-cmd-note\) \(mh-remove-sequence-notation msg nil t\)\)\)
\(while \(and \(<= ... ...\) \(not ...\)\) \(when \(looking-at mh-scan-valid-regexp\) \(let ... ... ...\)\) \(forward-line 1\)\)
\(save-excursion \(goto-char \(car ...\)\) \(beginning-of-line\) \(while \(and ... ...\) \(when ... ...\) \(forward-line 1\)\)\)
\(mh-iterate-on-messages-in-region msg \(car \(cons ... ...\)\) \(cdr \(cons ... ...\)\) \(mh-notate nil 32 mh-cmd-note\) \(mh-remove-sequence-notation msg nil t\)\)
\(cond \(\(numberp ...\) \(when ... ...\)\) \(\(and ... ... ...\) \(mh-iterate-on-messages-in-region msg ... ... ... ...\)\) \(t \(let ... ... ...\)\)\)
\(mh-iterate-on-range msg \(cons \(point-min\) \(point-max\)\) \(mh-notate nil 32 mh-cmd-note\) \(mh-remove-sequence-notation msg nil t\)\)
\(save-excursion \(setq overlay-arrow-position nil\) \(goto-char \(point-min\)\) \(mh-iterate-on-range msg \(cons ... ...\) \(mh-notate nil 32 mh-cmd-note\) \(mh-remove-sequence-notation msg nil t\)\) \(clrhash mh-sequence-notation-history\)\)
mh-remove-all-notation\(\)
\(progn \(if maildrop-name \(message "inc %s -file %s..." folder maildrop-name\) \(message "inc %s..." folder\)\) \(setq mh-next-direction \(quote forward\)\) \(goto-char \(point-max\)\) \(mh-remove-all-notation\) \(let \(...\) \(if maildrop-name ... ...\) \(if maildrop-name ... ...\) \(goto-char start-of-inc\) \(cond ... ... ... ... ...\) \(keep-lines mh-scan-valid-regexp\) \(setq mh-seq-list ...\) \(when ... ...\) \(if new-mail-flag ... ...\) \(mh-notate-user-sequences\) \(mh-notate-deleted-and-refiled\)\)\)
\(prog1 \(progn \(if maildrop-name ... ...\) \(setq mh-next-direction ...\) \(goto-char ...\) \(mh-remove-all-notation\) \(let ... ... ... ... ... ... ... ... ... ... ...\)\) \(mh-set-folder-modified-p mh-folder-updating-mod-flag\)\)
\(let \(\(mh-folder-updating-mod-flag ...\) \(buffer-read-only nil\) \(buffer-file-name nil\)\) \(prog1 \(progn ... ... ... ... ...\) \(mh-set-folder-modified-p mh-folder-updating-mod-flag\)\)\)
\(prog1 \(let \(... ... ...\) \(prog1 ... ...\)\)\)
\(with-mh-folder-updating \(t\) \(if maildrop-name \(message "inc %s -file %s..." folder maildrop-name\) \(message "inc %s..." folder\)\) \(setq mh-next-direction \(quote forward\)\) \(goto-char \(point-max\)\) \(mh-remove-all-notation\) \(let \(...\) \(if maildrop-name ... ...\) \(if maildrop-name ... ...\) \(goto-char start-of-inc\) \(cond ... ... ... ... ...\) \(keep-lines mh-scan-valid-regexp\) \(setq mh-seq-list ...\) \(when ... ...\) \(if new-mail-flag ... ...\) \(mh-notate-user-sequences\) \(mh-notate-deleted-and-refiled\)\)\)
\(let \(\(point-before-inc ...\) \(folder mh-current-folder\) \(new-mail-flag nil\)\) \(with-mh-folder-updating \(t\) \(if maildrop-name ... ...\) \(setq mh-next-direction ...\) \(goto-char ...\) \(mh-remove-all-notation\) \(let ... ... ... ... ... ... ... ... ... ... ...\)\)\)
mh-get-new-mail\(nil\)
\(let \(\(threading-needed-flag nil\)\) \(let \(...\) \(cond ... ...\)\) \(mh-get-new-mail maildrop-name\) \(when \(and threading-needed-flag ...\) \(mh-toggle-threads\)\) \(beginning-of-line\) \(if \(and mh-showing-mode ...\) \(mh-show\)\) \(run-hooks \(quote mh-inc-folder-hook\)\)\)
mh-inc-folder\(nil nil\)
call-interactively\(mh-inc-folder\)
---
Sent from sourceforge.net because mh-e-***@lists.sourceforge.net is subscribed to https://sourceforge.net/p/mh-e/bugs/
To unsubscribe from further messages, a project admin can change settings at https://sourceforge.net/p/mh-e/admin/bugs/options. Or, if this is a mailing list, you can unsubscribe from the mailing list.
---
** [bugs:#259] inc slow with large inbox**
**Status:** open
**Milestone:** mh-e-7.4.3
**Created:** Mon Dec 26, 2011 09:42 PM UTC by Bill Wohler
**Last Updated:** Mon Aug 18, 2014 11:35 AM UTC
**Owner:** nobody
To: mh-e-users at lists.sourceforge.net
Subject: Re: slow 'inc' in MH-E, fast in shell
X-Mailer: MH-E 7.4.3; nmh 1.0.4; GNU Emacs 21.3.1
From: Eric Jensen <jensen at astro.swarthmore.edu>
Date: Thu, 26 Aug 2004 14:11:28 -0400
Message-Id: <***@hven.astro.swarthmore.edu>
Hi Bill et al.,
Thanks for the speedy reply.
I think I have part of the answer to why my 'inc' is so slow in MH-E,
though not all of it. The short answer: too many messages in +inbox.
mhshow-show-text/html: w3m -T text/html
I'll guess that the inc was fast, but it took some time to render thefirst message to be shown. If it's HTML, it'll have to get processed,
which does take some time for me too \(I use w3m.el\). If the message is
HUGE, it'll take some time for that too. Send yourself a small ASCII
message and inc that. If that's fast, it's in the render. If that's
slow, oh boy.
as you say\). The delay happens even if the show buffer is toggled off,
or if the current message is plain ASCII.
In either case, try running toggle-debug-on-quit, do the inc and hit C-g
in the middle. Send us the stack trace. Remove compiled files or load
the .el files for the "interesting" files to make the trace much more
helpful.
OK, at the end of this message is the stack trace when using the sourcein the middle. Send us the stack trace. Remove compiled files or load
the .el files for the "interesting" files to make the trace much more
helpful.
files. But, I think I have a clue to the problem from looking at the
simpler stack trace from using the compiled files:
Debugger entered--Lisp error: \(quit\)
jit-lock-after-change\(97767 97767 1\)
delete-char\(1\)
mh-notate\(nil 32 5\)
mh-remove-all-notation\(\)
mh-get-new-mail\(nil\)
mh-inc-folder\(nil nil\)
call-interactively\(mh-inc-folder\)
Am I correct that that "mh-remove-all-notation" has to do something with
every message in the +inbox buffer?
Now for the self-incrimination; here's where my bad e-mail habits come
to light. I currently have 6703 messages in +inbox. If I rescan the
folder with a limited range of messages \(say less than 1000\) then the
'inc' returns quite quickly. But if I have scan lines from all the
messages in there, then the 'inc' takes 8-10 seconds \(on an old 400 MHz
Pentium II, faster on a newer machine\). I've been meaning to clean out
that folder anyway, but perhaps you could let me know if my diagnosis is
correct. If so, is there any way to run some of the de-annotation or
re-annotation in the background? \(I'll clean out my folder in any case,
but I've noticed in the new version of emacs that, e.g., font-locking
doesn't always happen in real-time, which is nice not having to wait for
it to complete.\)
One other thing you could try is to upgrade to version 7.82 which I
released last night.
I'll check it out - thanks\! And thanks as always for the quick andreleased last night.
friendly help on this list, and for MH-E itself.
Eric
\----
Here's the full stack trace:
Debugger entered--Lisp error: \(quit\)
\(save-excursion \(beginning-of-line\) \(cond \(... ...\) \(error-if-no-message ...\) \(t nil\)\)\)
mh-get-msg-num\(t\)
\(let \(\(msg ...\)\) \(mh-notate nil 32 mh-cmd-note\) \(mh-remove-sequence-notation msg nil t\)\)
\(progn \(let \(...\) \(mh-notate nil 32 mh-cmd-note\) \(mh-remove-sequence-notation msg nil t\)\)\)
\(if \(looking-at mh-scan-valid-regexp\) \(progn \(let ... ... ...\)\)\)
\(when \(looking-at mh-scan-valid-regexp\) \(let \(...\) \(mh-notate nil 32 mh-cmd-note\) \(mh-remove-sequence-notation msg nil t\)\)\)
\(while \(and \(<= ... ...\) \(not ...\)\) \(when \(looking-at mh-scan-valid-regexp\) \(let ... ... ...\)\) \(forward-line 1\)\)
\(save-excursion \(goto-char \(car ...\)\) \(beginning-of-line\) \(while \(and ... ...\) \(when ... ...\) \(forward-line 1\)\)\)
\(mh-iterate-on-messages-in-region msg \(car \(cons ... ...\)\) \(cdr \(cons ... ...\)\) \(mh-notate nil 32 mh-cmd-note\) \(mh-remove-sequence-notation msg nil t\)\)
\(cond \(\(numberp ...\) \(when ... ...\)\) \(\(and ... ... ...\) \(mh-iterate-on-messages-in-region msg ... ... ... ...\)\) \(t \(let ... ... ...\)\)\)
\(mh-iterate-on-range msg \(cons \(point-min\) \(point-max\)\) \(mh-notate nil 32 mh-cmd-note\) \(mh-remove-sequence-notation msg nil t\)\)
\(save-excursion \(setq overlay-arrow-position nil\) \(goto-char \(point-min\)\) \(mh-iterate-on-range msg \(cons ... ...\) \(mh-notate nil 32 mh-cmd-note\) \(mh-remove-sequence-notation msg nil t\)\) \(clrhash mh-sequence-notation-history\)\)
mh-remove-all-notation\(\)
\(progn \(if maildrop-name \(message "inc %s -file %s..." folder maildrop-name\) \(message "inc %s..." folder\)\) \(setq mh-next-direction \(quote forward\)\) \(goto-char \(point-max\)\) \(mh-remove-all-notation\) \(let \(...\) \(if maildrop-name ... ...\) \(if maildrop-name ... ...\) \(goto-char start-of-inc\) \(cond ... ... ... ... ...\) \(keep-lines mh-scan-valid-regexp\) \(setq mh-seq-list ...\) \(when ... ...\) \(if new-mail-flag ... ...\) \(mh-notate-user-sequences\) \(mh-notate-deleted-and-refiled\)\)\)
\(prog1 \(progn \(if maildrop-name ... ...\) \(setq mh-next-direction ...\) \(goto-char ...\) \(mh-remove-all-notation\) \(let ... ... ... ... ... ... ... ... ... ... ...\)\) \(mh-set-folder-modified-p mh-folder-updating-mod-flag\)\)
\(let \(\(mh-folder-updating-mod-flag ...\) \(buffer-read-only nil\) \(buffer-file-name nil\)\) \(prog1 \(progn ... ... ... ... ...\) \(mh-set-folder-modified-p mh-folder-updating-mod-flag\)\)\)
\(prog1 \(let \(... ... ...\) \(prog1 ... ...\)\)\)
\(with-mh-folder-updating \(t\) \(if maildrop-name \(message "inc %s -file %s..." folder maildrop-name\) \(message "inc %s..." folder\)\) \(setq mh-next-direction \(quote forward\)\) \(goto-char \(point-max\)\) \(mh-remove-all-notation\) \(let \(...\) \(if maildrop-name ... ...\) \(if maildrop-name ... ...\) \(goto-char start-of-inc\) \(cond ... ... ... ... ...\) \(keep-lines mh-scan-valid-regexp\) \(setq mh-seq-list ...\) \(when ... ...\) \(if new-mail-flag ... ...\) \(mh-notate-user-sequences\) \(mh-notate-deleted-and-refiled\)\)\)
\(let \(\(point-before-inc ...\) \(folder mh-current-folder\) \(new-mail-flag nil\)\) \(with-mh-folder-updating \(t\) \(if maildrop-name ... ...\) \(setq mh-next-direction ...\) \(goto-char ...\) \(mh-remove-all-notation\) \(let ... ... ... ... ... ... ... ... ... ... ...\)\)\)
mh-get-new-mail\(nil\)
\(let \(\(threading-needed-flag nil\)\) \(let \(...\) \(cond ... ...\)\) \(mh-get-new-mail maildrop-name\) \(when \(and threading-needed-flag ...\) \(mh-toggle-threads\)\) \(beginning-of-line\) \(if \(and mh-showing-mode ...\) \(mh-show\)\) \(run-hooks \(quote mh-inc-folder-hook\)\)\)
mh-inc-folder\(nil nil\)
call-interactively\(mh-inc-folder\)
---
Sent from sourceforge.net because mh-e-***@lists.sourceforge.net is subscribed to https://sourceforge.net/p/mh-e/bugs/
To unsubscribe from further messages, a project admin can change settings at https://sourceforge.net/p/mh-e/admin/bugs/options. Or, if this is a mailing list, you can unsubscribe from the mailing list.