Discussion:
slow `B m' due to a require for each of gnus-active-hashtb
Kevin Brubeck Unhammer
2016-08-09 09:33:36 UTC
Permalink
Hi,

On Gnus v5.13, Emacs 24.5.1, doing `B m` takes quite a long time (10s
and up) before it shows any prompt (but seemingly only after I've been
using Emacs for a while). If I toggle-debug-on-quit and poormansprofile
it a bit, the backtraces always look like this:

Debugger entered--Lisp error: (quit)
require(nntp)
gnus-get-function((nntp "news.gwene.org") request-accept-article t)
gnus-valid-move-group-p(nntp+news\.gwene\.org:gwene\.net\.patdavid\.gimp)
#[(symbol) " !\205 \nB\211\207" [predicate symbol out] 2](nntp+news\.gwene\.org:gwene\.net\.patdavid\.gimp)
mapatoms(#[(symbol) " !\205 \nB\211\207" [predicate symbol out] 2] [nntp+news\.gmane\.org:gmane\.comp\.storage\.spectrum-scale\.gpfs\.user ...])
gnus-remove-if-not(gnus-valid-move-group-p [nntp+news\.gmane\.org:gmane\.comp\.storage\.spectrum-scale\.gpfs\.user ...] t)
gnus-read-move-group-name("Move" "nnimap+fmmbsync:Junk Mail" (397) "nnimap+trigram:")
gnus-summary-move-article(nil)
call-interactively(gnus-summary-move-article nil nil)
command-execute(gnus-summary-move-article)

It's a lot faster if I simply comment out (require (car method)) from
gnus-get-function (the require seems to still be there in git). If
that's not safe (how many backend methods are there?), then perhaps
there could be an alternate active group storage that organises active
groups hierarchically, so it would be possible to go from
valid-move-group to a set of groups?
--
Kevin Brubeck Unhammer
P. Paolini
2016-08-10 16:43:55 UTC
Permalink
Post by Kevin Brubeck Unhammer
Hi,
On Gnus v5.13, Emacs 24.5.1, doing `B m` takes quite a long time (10s
and up) before it shows any prompt (but seemingly only after I've been
using Emacs for a while). If I toggle-debug-on-quit and poormansprofile
Debugger entered--Lisp error: (quit)
require(nntp)
gnus-get-function((nntp "news.gwene.org") request-accept-article t)
gnus-valid-move-group-p(nntp+news\.gwene\.org:gwene\.net\.patdavid\.gimp)
#[(symbol) " !\205 \nB\211\207" [predicate symbol out]
2](nntp+news\.gwene\.org:gwene\.net\.patdavid\.gimp)
mapatoms(#[(symbol) " !\205 \nB\211\207" [predicate symbol out]
2]
[nntp+news\.gmane\.org:gmane\.comp\.storage\.spectrum-scale\.gpfs\.user
...])
gnus-remove-if-not(gnus-valid-move-group-p
[nntp+news\.gmane\.org:gmane\.comp\.storage\.spectrum-scale\.gpfs\.user
...] t)
gnus-read-move-group-name("Move" "nnimap+fmmbsync:Junk Mail" (397) "nnimap+trigram:")
gnus-summary-move-article(nil)
call-interactively(gnus-summary-move-article nil nil)
command-execute(gnus-summary-move-article)
It's a lot faster if I simply comment out (require (car method)) from
gnus-get-function (the require seems to still be there in git). If
that's not safe (how many backend methods are there?), then perhaps
there could be an alternate active group storage that organises active
groups hierarchically, so it would be possible to go from
valid-move-group to a set of groups?
I
Lars Ingebrigtsen
2018-04-11 18:16:23 UTC
Permalink
Post by Kevin Brubeck Unhammer
On Gnus v5.13, Emacs 24.5.1, doing `B m` takes quite a long time (10s
and up) before it shows any prompt (but seemingly only after I've been
using Emacs for a while). If I toggle-debug-on-quit and poormansprofile
Debugger entered--Lisp error: (quit)
require(nntp)
gnus-get-function((nntp "news.gwene.org") request-accept-article t)
gnus-valid-move-group-p(nntp+news\.gwene\.org:gwene\.net\.patdavid\.gimp)
[...]
Post by Kevin Brubeck Unhammer
It's a lot faster if I simply comment out (require (car method)) from
gnus-get-function (the require seems to still be there in git). If
that's not safe (how many backend methods are there?), then perhaps
there could be an alternate active group storage that organises active
groups hierarchically, so it would be possible to go from
valid-move-group to a set of groups?
Hm... it's odd that require should be the bottleneck here, because it's
a NOOP if the feature has already been loaded.

(benchmark-run 100000 (require 'nntp))

takes 0.1s on my machine. How many groups do you have? :-)
--
(domestic pets only, the antidote for overdose, milk.)
bloggy blog: http://lars.ingebrigtsen.no
Loading...