GNU bug report logs - #64681
30.0.50; slow saving of scores when leaving an nnml group in gnus

Previous Next

Package: emacs;

Reported by: "Fraga, Eric" <e.fraga <at> ucl.ac.uk>

Date: Mon, 17 Jul 2023 12:07:02 UTC

Severity: normal

Found in version 30.0.50

To reply to this bug, email your comments to 64681 AT debbugs.gnu.org.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-gnu-emacs <at> gnu.org:
bug#64681; Package emacs. (Mon, 17 Jul 2023 12:07:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to "Fraga, Eric" <e.fraga <at> ucl.ac.uk>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Mon, 17 Jul 2023 12:07:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: "Fraga, Eric" <e.fraga <at> ucl.ac.uk>
To: "bug-gnu-emacs <at> gnu.org" <bug-gnu-emacs <at> gnu.org>
Subject: 30.0.50; slow saving of scores when leaving an nnml group in gnus
Date: Mon, 17 Jul 2023 12:01:34 +0000
Recently, I've noticed a slow down in leaving some of my nnml groups.
Using the profiler, I see the outcomes shown below, capturing cpu and
memory when entering a virtual group, that collects 3 different nnml
groups, and then immediately leaving that group.  The same behaviour is
seen when entering a single nnml group.

A significant amount of time is taken saving scores, as far as I can
tell.  I use adaptive scoring.  Nothing with respect to scoring has
changed in my configuration in some time (years probably).

The offending function appears to be "lisp--local-defform-body-p" with
large memory and cpu use.

Cpu report (partly expanded):

       10133  79% - command-execute
        8519  66%  - funcall-interactively
        4767  37%   - gnus-summary-exit
        4659  36%    - gnus-score-save
        4655  36%     - gnus-pp
        4655  36%      - pp
        4655  36%       - pp-to-string
        4655  36%        - pp-fill
        4647  36%         - pp--object
        4627  36%          - pp-fill
        4615  36%           - pp-fill
        4555  35%            - pp-fill
        4263  33%             - pp-fill
        4243  33%              - indent-according-to-mode
        4243  33%               - lisp-indent-line
        4163  32%                - calculate-lisp-indent
        4163  32%                 - lisp-indent-function
        4163  32%                    lisp--local-defform-body-p
          48   0%                + lisp-ppss
         240   1%             + indent-according-to-mode
          72   0%    + gnus-run-hooks
          32   0%    + gnus-close-group
           4   0%    + gnus-summary-update-info
        3688  28%   + gnus-topic-select-group
          60   0%   + file-notify-handle-event
           3   0%   + execute-extended-command
        1614  12%  + byte-code
        2260  17%   Automatic GC
         407   3% + timer-event-handler
           0   0%   ...

and memory report, also partly expanded:

    832,940,181  99% - command-execute
    805,535,710  96%  - funcall-interactively
    540,874,166  64%   - gnus-summary-exit
    537,712,423  64%    - gnus-score-save
    536,634,533  64%     - gnus-pp
    535,956,310  64%      - pp
    535,618,670  64%       - pp-to-string
    535,610,465  64%        - pp-fill
    533,695,189  63%         - pp--object
    533,684,957  63%          - pp-fill
    533,683,933  63%           - pp-fill
    533,651,141  63%            - pp-fill
    532,169,752  63%             - pp-fill
    531,888,880  63%              - indent-according-to-mode
    531,888,880  63%               - lisp-indent-line
    484,726,608  58%                - calculate-lisp-indent
    484,661,024  58%                 - lisp-indent-function
    484,661,024  58%                    lisp--local-defform-body-p
        902,445   0%             + indent-according-to-mode
             21   0%       nnheader-set-temp-buffer
      1,609,314   0%    + gnus-summary-update-info
        924,174   0%    + gnus-close-group
        579,308   0%    + gnus-run-hooks
          2,069   0%      gnus-score-adaptive
          1,529   0%    + gnus-configure-windows
             21   0%      gnus-set-global-variables
    263,358,645  31%   + gnus-topic-select-group
        839,207   0%   + execute-extended-command
        463,692   0%   + file-notify-handle-event
     27,404,471   3%  + byte-code
        983,687   0% + timer-event-handler
         53,056   0% + redisplay_internal (C function)
         14,903   0%   Automatic GC
          6,224   0% + hl-line-highlight
             21   0%   gnus-set-global-variables
              0   0%   ...

After discussion on the gnus mailing list, the culprit would appear to
be the pretty-printing.  Setting pp-default-function to 'pp-28 instead
of 'pp-fill restores the behaviour to what is desirable in terms of
speed.

Thank you,
eric



In GNU Emacs 30.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version
 3.24.37, cairo version 1.16.0) of 2023-07-10 built on dt2022
Repository revision: b56f46c9deeb782297695e39baf8f3c65c85281b
Repository branch: master
Windowing system distributor 'The X.Org Foundation', version 11.0.12101007
System Description: Debian GNU/Linux 12 (bookworm)

Configured using:
 'configure --prefix=/home/ucecesf/pd/emacs --with-native-compilation
 --with-x-toolkit=gtk3 --with-xwidgets'

Configured features:
CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GSETTINGS HARFBUZZ JPEG JSON
LCMS2 LIBSELINUX LIBXML2 MODULES NATIVE_COMP NOTIFY INOTIFY PDUMPER PNG
RSVG SECCOMP SOUND SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS WEBP X11
XDBE XIM XINPUT2 XPM XWIDGETS GTK3 ZLIB

Important settings:
  value of $LANG: en_GB.UTF-8
  value of $XMODIFIERS: @im=ibus
  locale-coding-system: utf-8-unix

Major mode: Lisp Interaction

Minor modes in effect:
  display-line-numbers-mode: t
  evil-surround-mode: t
  tsa-keys: t
  electric-pair-mode: t
  indent-guide-mode: t
  savehist-mode: t
  vertico-mode: t
  marginalia-mode: t
  global-atomic-chrome-edit-mode: t
  override-global-mode: t
  emms-mode-line-mode: t
  emms-playing-time-display-mode: t
  emms-playing-time-mode: t
  recentf-mode: t
  display-time-mode: t
  global-aggressive-indent-mode: t
  aggressive-indent-mode: t
  which-key-mode: t
  windmove-mode: t
  org-roam-db-autosync-mode: t
  global-auto-revert-mode: t
  hl-line-mode: t
  evil-owl-mode: t
  general-override-mode: t
  global-evil-fringe-mark-mode: t
  evil-local-mode: t
  server-mode: t
  save-place-mode: t
  dynamic-completion-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  eldoc-mode: t
  show-paren-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  tab-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  window-divider-mode: t
  line-number-mode: t
  transient-mark-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  abbrev-mode: t

Load-path shadows:
~/git/org-contrib/lisp/ol-man hides ~/git/org-mode/lisp/ol-man
~/s/emacs/time-tracker/time-tracker hides ~/s/emacs/time-tracker
~/git/org-mode/lisp/org-num hides ~/s/emacs/org-num
~/s/emacs/markdown-mode hides /home/ucecesf/.emacs.d/elpa,v30/markdown-mode-20230607.320/markdown-mode
/home/ucecesf/.emacs.d/elpa,v30/transient-20230602.2121/transient hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/transient
~/s/emacs/custom hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/custom
/home/ucecesf/.emacs.d/elpa,v30/use-package-20230426.2324/use-package-lint hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/use-package/use-package-lint
/home/ucecesf/.emacs.d/elpa,v30/use-package-20230426.2324/use-package-ensure hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/use-package/use-package-ensure
/home/ucecesf/.emacs.d/elpa,v30/use-package-20230426.2324/use-package hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/use-package/use-package
/home/ucecesf/.emacs.d/elpa,v30/use-package-20230426.2324/use-package-bind-key hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/use-package/use-package-bind-key
/home/ucecesf/.emacs.d/elpa,v30/use-package-20230426.2324/use-package-delight hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/use-package/use-package-delight
/home/ucecesf/.emacs.d/elpa,v30/use-package-20230426.2324/use-package-jump hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/use-package/use-package-jump
/home/ucecesf/.emacs.d/elpa,v30/use-package-20230426.2324/use-package-diminish hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/use-package/use-package-diminish
/home/ucecesf/.emacs.d/elpa,v30/use-package-20230426.2324/use-package-core hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/use-package/use-package-core
/home/ucecesf/.emacs.d/elpa,v30/bind-key-20230203.2004/bind-key hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/use-package/bind-key
~/git/org-mode/lisp/ob-js hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/ob-js
~/git/org-mode/lisp/ob-matlab hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/ob-matlab
~/git/org-mode/lisp/ob-octave hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/ob-octave
~/git/org-mode/lisp/ob-awk hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/ob-awk
~/git/org-mode/lisp/ob-emacs-lisp hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/ob-emacs-lisp
~/git/org-mode/lisp/org-faces hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/org-faces
~/git/org-mode/lisp/ol-doi hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/ol-doi
~/git/org-mode/lisp/ob-eshell hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/ob-eshell
~/git/org-mode/lisp/ob-C hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/ob-C
~/git/org-mode/lisp/ob-sqlite hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/ob-sqlite
~/git/org-mode/lisp/ob-haskell hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/ob-haskell
~/git/org-mode/lisp/org-feed hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/org-feed
~/git/org-mode/lisp/ol-gnus hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/ol-gnus
~/git/org-mode/lisp/org-inlinetask hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/org-inlinetask
~/git/org-mode/lisp/ol-irc hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/ol-irc
~/git/org-mode/lisp/org-src hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/org-src
~/git/org-mode/lisp/oc-csl hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/oc-csl
~/git/org-mode/lisp/ob-shell hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/ob-shell
~/git/org-mode/lisp/org-duration hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/org-duration
~/git/org-mode/lisp/org-persist hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/org-persist
~/git/org-mode/lisp/ob-scheme hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/ob-scheme
~/git/org-mode/lisp/ob-fortran hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/ob-fortran
~/git/org-mode/lisp/ox-latex hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/ox-latex
~/git/org-mode/lisp/org-clock hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/org-clock
~/git/org-mode/lisp/org-archive hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/org-archive
~/git/org-mode/lisp/ob-java hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/ob-java
~/git/org-mode/lisp/org-pcomplete hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/org-pcomplete
~/git/org-mode/lisp/org-protocol hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/org-protocol
~/git/org-contrib/lisp/ol-man hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/ol-man
~/git/org-mode/lisp/org-keys hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/org-keys
~/git/org-mode/lisp/ol-rmail hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/ol-rmail
~/git/org-mode/lisp/ob-ref hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/ob-ref
~/git/org-mode/lisp/ob hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/ob
~/git/org-mode/lisp/org-tempo hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/org-tempo
~/git/org-mode/lisp/oc-biblatex hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/oc-biblatex
~/git/org-mode/lisp/ox-beamer hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/ox-beamer
~/git/org-mode/lisp/ob-lua hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/ob-lua
~/git/org-mode/lisp/ox-ascii hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/ox-ascii
~/git/org-mode/lisp/oc-bibtex hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/oc-bibtex
~/git/org-mode/lisp/org-capture hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/org-capture
~/git/org-mode/lisp/org-compat hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/org-compat
~/git/org-mode/lisp/org hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/org
~/git/org-mode/lisp/org-refile hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/org-refile
~/git/org-mode/lisp/ob-sass hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/ob-sass
~/git/org-mode/lisp/ob-lob hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/ob-lob
~/git/org-mode/lisp/ox-icalendar hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/ox-icalendar
~/git/org-mode/lisp/org-mouse hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/org-mouse
~/git/org-mode/lisp/ox-publish hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/ox-publish
~/git/org-mode/lisp/ob-sql hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/ob-sql
~/git/org-mode/lisp/org-id hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/org-id
~/git/org-mode/lisp/org-datetree hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/org-datetree
~/git/org-mode/lisp/ob-processing hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/ob-processing
~/git/org-mode/lisp/org-mobile hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/org-mobile
~/git/org-mode/lisp/ox-texinfo hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/ox-texinfo
~/git/org-mode/lisp/org-habit hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/org-habit
~/git/org-mode/lisp/org-lint hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/org-lint
~/git/org-mode/lisp/org-loaddefs hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/org-loaddefs
~/git/org-mode/lisp/ob-eval hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/ob-eval
~/git/org-mode/lisp/ol-eshell hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/ol-eshell
~/git/org-mode/lisp/ob-comint hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/ob-comint
~/git/org-mode/lisp/ob-screen hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/ob-screen
~/git/org-mode/lisp/ol hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/ol
~/git/org-mode/lisp/ob-table hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/ob-table
~/git/org-mode/lisp/org-ctags hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/org-ctags
~/git/org-mode/lisp/org-element hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/org-element
~/git/org-mode/lisp/ol-mhe hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/ol-mhe
~/git/org-mode/lisp/ol-eww hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/ol-eww
~/git/org-mode/lisp/org-fold-core hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/org-fold-core
~/git/org-mode/lisp/org-entities hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/org-entities
~/git/org-mode/lisp/ob-groovy hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/ob-groovy
~/git/org-mode/lisp/ob-tangle hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/ob-tangle
~/git/org-mode/lisp/oc hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/oc
~/git/org-mode/lisp/ob-gnuplot hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/ob-gnuplot
~/git/org-mode/lisp/ob-python hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/ob-python
~/git/org-mode/lisp/org-indent hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/org-indent
~/git/org-mode/lisp/ob-forth hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/ob-forth
~/git/org-mode/lisp/ol-bbdb hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/ol-bbdb
~/git/org-mode/lisp/ob-latex hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/ob-latex
~/git/org-mode/lisp/ol-w3m hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/ol-w3m
~/git/org-mode/lisp/ox-org hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/ox-org
~/git/org-mode/lisp/ol-docview hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/ol-docview
~/git/org-mode/lisp/ob-makefile hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/ob-makefile
~/git/org-mode/lisp/ob-julia hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/ob-julia
~/git/org-mode/lisp/ob-lilypond hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/ob-lilypond
~/git/org-mode/lisp/ob-maxima hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/ob-maxima
~/git/org-mode/lisp/ob-ocaml hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/ob-ocaml
~/git/org-mode/lisp/org-list hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/org-list
~/git/org-mode/lisp/ob-core hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/ob-core
~/git/org-mode/lisp/org-agenda hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/org-agenda
~/git/org-mode/lisp/org-macs hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/org-macs
~/git/org-mode/lisp/ox hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/ox
~/git/org-mode/lisp/ob-plantuml hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/ob-plantuml
~/git/org-mode/lisp/ob-css hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/ob-css
~/git/org-mode/lisp/org-attach-git hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/org-attach-git
~/git/org-mode/lisp/ol-bibtex hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/ol-bibtex
~/git/org-mode/lisp/org-goto hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/org-goto
~/git/org-mode/lisp/ob-ditaa hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/ob-ditaa
~/git/org-mode/lisp/oc-natbib hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/oc-natbib
~/git/org-mode/lisp/org-num hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/org-num
~/git/org-mode/lisp/ob-lisp hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/ob-lisp
~/git/org-mode/lisp/org-cycle hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/org-cycle
~/git/org-mode/lisp/ob-ruby hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/ob-ruby
~/git/org-mode/lisp/ob-dot hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/ob-dot
~/git/org-mode/lisp/ox-odt hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/ox-odt
~/git/org-mode/lisp/ox-koma-letter hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/ox-koma-letter
~/git/org-mode/lisp/oc-basic hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/oc-basic
~/git/org-mode/lisp/ox-html hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/ox-html
~/git/org-mode/lisp/org-table hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/org-table
~/git/org-mode/lisp/org-timer hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/org-timer
~/git/org-mode/lisp/ob-exp hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/ob-exp
~/git/org-mode/lisp/ob-R hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/ob-R
~/git/org-mode/lisp/ob-org hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/ob-org
~/git/org-mode/lisp/ox-md hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/ox-md
~/git/org-mode/lisp/org-macro hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/org-macro
~/git/org-mode/lisp/ox-man hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/ox-man
~/git/org-mode/lisp/ob-clojure hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/ob-clojure
~/git/org-mode/lisp/org-fold hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/org-fold
~/git/org-mode/lisp/ob-calc hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/ob-calc
~/git/org-mode/lisp/org-footnote hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/org-footnote
~/git/org-mode/lisp/org-plot hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/org-plot
~/git/org-mode/lisp/ob-sed hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/ob-sed
~/git/org-mode/lisp/org-attach hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/org-attach
~/git/org-mode/lisp/ob-perl hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/ob-perl
~/git/org-mode/lisp/ol-info hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/ol-info
~/git/org-mode/lisp/org-version hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/org-version
~/git/org-mode/lisp/org-colview hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/org-colview
~/git/org-mode/lisp/org-crypt hides /home/ucecesf/pd/emacs/share/emacs/30.0.50/lisp/org/org-crypt

Features:
(shadow emacsbug emoji-labels emoji multisession password-store-otp pass
password-store auth-source-pass ibuffer ibuffer-loaddefs trace debug
backtrace imenu woman man eudcb-bbdb eudc eudc-options-file eudc-vars
thai-util thai-word lao-util enriched calc-map calc-stat calc-vec
calc-menu calc-aent ediff-vers ediff ediff-merg ediff-mult ediff-wind
ediff-diff ediff-help ediff-init ediff-util cl-indent with-editor
cl-print smerge-mode diff tex-mode em-unix em-term em-script em-prompt
em-pred em-ls em-hist em-glob em-extpipe em-cmpl em-dirs em-basic
em-banner em-alias esh-mode esh-var quail ispell cua-base
mastodon-profile mastodon-auth mastodon-client plstore wdired
gnuplot-context log-edit add-log vc-bzr vc-sccs vc-svn vc-cvs latexenc
vc-hg canlock view org-archive org-caldav url-dav gnus-html help-fns
consult-org loaddefs-gen lisp-mnt radix-tree vc-filewise vc-rcs cus-edit
cus-start tabify elfeed-link grep vc-src misearch multi-isearch
dired-aux etags fileloop gnus-cus gnus-eform magit-base mule-util
flow-fill cal-julian cal-iso diff-hl log-view pcvs-util vc-dir vc
org-indent cape-char gnus-gravatar gravatar gnus-picon smiley mm-archive
gnus-async ecomplete smtpmail textsec uni-scripts idna-mapping
ucs-normalize uni-confusable textsec-check gnus-bcklg gnus-cite
bbdb-message mail-extr display-fill-column-indicator gnus-dup gnus-ml
gnus-topic qp pop3 epa-file network-stream nnmbox nnml bbdb-gnus nnnil
cape gnus-alias gnus-icalendar icalendar vcard gnus-delay gnus-draft
gnus-agent gnus-srvr gnus-score score-mode nnvirtual nntp gnus-cache
gnus-msg nndraft nnmh gnus-search eieio-opt speedbar ezimage dframe
display-line-numbers evil-surround diminish writegood-mode time-stamp
jinx elec-pair indent-guide eol-conversion savehist vertico orderless
use-package-ensure marginalia atomic-chrome websocket twittering-mode
ement ement-notify dns mastodon-notifications mastodon-alt
mastodon-media url-cache mastodon-tl ts mastodon mastodon-search
mastodon-toot facemenu mastodon-iso persist emojify apropos tar-mode
arc-mode archive-mode mastodon-http request eww-lnum
use-package-bind-key bind-key elfeed-show elfeed-search elfeed-csv
elfeed elfeed-curl elfeed-log elfeed-db elfeed-lib xml-query octave
maxima maxima-font-lock julia-repl julia-mode julia-mode-latexsubs
jacaranda-mode generic generic-x remarkable qrencode persist-state
emms-mpris emms-librefm-stream emms-librefm-scrobbler
emms-playlist-limit emms-i18n emms-history emms-score emms-stream-info
emms-metaplaylist-mode emms-bookmarks emms-cue emms-mode-line-icon
emms-browser sort emms-volume emms-volume-sndioctl emms-volume-mixerctl
emms-volume-pulse emms-volume-amixer emms-playlist-sort emms-last-played
emms-player-xine emms-player-mpd tq emms-lyrics emms-url emms-streams
emms-show-all emms-tag-editor emms-tag-tracktag emms-mark emms-mode-line
emms-cache emms-info-native bindat emms-info-exiftool emms-info-tinytag
emms-info-metaflac emms-info-opusinfo emms-info-ogginfo
emms-info-mp3info emms-playlist-mode emms-player-vlc emms-player-mpv
emms-playing-time emms-info emms-later-do emms-player-mplayer
emms-player-simple emms-source-playlist emms-source-file locate
emms-setup emms emms-compat ledger-mode ledger-check ledger-texi
ledger-test ledger-sort ledger-report ledger-reconcile ledger-occur
ledger-fonts ledger-fontify ledger-state ledger-complete ledger-schedule
ledger-init ledger-xact ledger-post ledger-exec ledger-navigate eshell
esh-cmd esh-ext esh-opt esh-proc esh-io esh-arg esh-module esh-groups
esh-util files-x ledger-context ledger-commodities ledger-regex gnuplot
info-look gams-mode find-lisp align mailalias bbdb-mua bbdb-com crm bbdb
bbdb-site term disp-table ehelp ace-jump-mode dired-x dired-narrow
delsel dired-hacks-utils gnus-dired consult-dir embark-consult consult
recentf tree-widget orgalist time aggressive-indent time-tracker
use-package-core which-key windmove org-roam-dailies org-ref
org-ref-core org-ref-glossary org-ref-bibtex avy doi-utils url-http
url-auth url-gw nsm org-ref-utils org-ref-export ox-pandoc ht
org-ref-misc-links org-ref-label-link org-ref-ref-links
org-ref-citation-links xref org-ref-bibliography-links hydra lv
org-roam-migrate org-roam-log org-roam-mode org-roam-capture org-roam-id
org-roam-node org-roam-db emacsql-sqlite-builtin sqlite org-roam-utils
org-roam-compat org-roam emacsql-sqlite emacsql-sqlite-common emacsql
emacsql-compiler org-panes org-attach org-clock ob-mathematica mma cl
ob-julia ob-awk ob-sqlite ob-sql ob-shell shell ob-ruby ob-python python
project ob-plantuml ob-org ob-octave ob-maxima ob-ledger ob-latex
ob-jacaranda ob-gnuplot ob-gams ob-dot ob-ditaa ob-clojure ob-calc
calc-store calc-trail calc-ext calc calc-loaddefs calc-macs ob-R
org-sticky-header org-recur cal-china lunar solar cal-dst cal-bahai
cal-islam cal-hebrew holidays holiday-loaddefs org-duration hi-lock
autorevert vc-git diff-mode easy-mmode vc-dispatcher ol-eww eww mm-url
ol-rmail ol-mhe ol-irc ol-info ol-gnus nnselect gnus-art mm-uu mml2015
mm-view mml-smime smime gnutls dig gnus-sum gnus-group gnus-undo
gnus-start gnus-dbus gnus-cloud nnimap nnmail mail-source utf7 nnoo
gnus-spec gnus-int gnus-range message sendmail yank-media rfc822 mml
mml-sec epa derived epg rfc6068 epg-config mm-decode mm-bodies mm-encode
mail-parse rfc2231 rfc2047 rfc2045 ietf-drums mailabbrev gmm-utils
mailheader gnus-win gnus nnheader gnus-util mail-utils range mm-util
mail-prsvr wid-edit ol-docview doc-view jka-compr image-mode exif dired
dired-loaddefs ol-bbdb ol-w3m ol-doi org-link-doi notifications dbus
appt diary-lib diary-loaddefs ox-bibtex ox-beamer ox-koma-letter
embark-org embark ffap bibtex-completion org-capture filenotify biblio
biblio-download biblio-dissemin biblio-ieee biblio-hal biblio-dblp
biblio-crossref biblio-arxiv timezone biblio-doi biblio-core url-queue
ido hl-line citar-org citar citar-file citar-cache citar-format
oc-natbib oc-csl citeproc citeproc-itemgetters citeproc-biblatex
parse-time citeproc-bibtex parsebib ol-bibtex citeproc-cite
citeproc-subbibs citeproc-sort citeproc-name citeproc-formatters
citeproc-number rst compile citeproc-proc citeproc-disamb
citeproc-itemdata citeproc-generic-elements citeproc-macro
citeproc-choose citeproc-date citeproc-context citeproc-prange
citeproc-style citeproc-locale citeproc-term f f-shortdoc citeproc-rt
citeproc-lib citeproc-s s let-alist queue oc-bibtex oc-basic bibtex
iso8601 org-wc org-inlinetask org-crypt org-protocol org-mime ox-org
ox-odt rng-loc rng-uri rng-parse rng-match rng-dt rng-util rng-pttrn
nxml-parse nxml-ns nxml-enc xmltok nxml-util ox-latex ox-icalendar
org-agenda ox-html table ox-ascii ox-publish ox org-element
org-element-ast inline org-persist xdg org-id org-refile avl-tree
generator org ob ob-tangle ob-ref ob-lob ob-table ob-exp org-macro
org-src sh-script smie treesit executable ob-comint org-pcomplete
pcomplete comint ansi-osc ansi-color org-list org-footnote org-faces
org-entities time-date noutline outline ob-emacs-lisp ob-core ob-eval
org-cycle org-table ol org-fold org-fold-core org-keys oc org-loaddefs
find-func cal-menu calendar cal-loaddefs org-version org-compat org-macs
evil-owl general evil-fringe-mark evil-fringe-mark-overlays
fringe-helper evil evil-keybindings evil-integration evil-maps
evil-commands reveal evil-jumps evil-command-window evil-search evil-ex
evil-types evil-macros evil-repeat evil-states evil-core advice
evil-common thingatpt rect evil-digraphs evil-vars ring comp comp-cstr
exwm-systemtray xcb-systemtray xcb-xembed exwm-randr xcb-randr exwm
exwm-input xcb-keysyms xcb-xkb exwm-manage exwm-floating xcb-cursor
xcb-render exwm-layout exwm-workspace exwm-core xcb-ewmh xcb-icccm xcb
xcb-xproto xcb-types xcb-debug server ement-room transient cl-extra
help-mode edmacro kmacro bookmark pp face-remap ement-lib ement-api
ement-structs ement-macros magit-section format-spec dash cursor-sensor
compat warnings icons plz rx shr text-property-search pixel-fill kinsoku
url-file puny svg xml dom ewoc color saveplace help-at-pt completion
cus-load finder-inf aggressive-indent-autoloads anaphora-autoloads
atomic-chrome-autoloads bbdb-autoloads cape-autoloads
circadian-autoloads citar-autoloads citeproc-org-autoloads
company-autoloads diff-hl-autoloads diminish-autoloads
dired-narrow-autoloads dired-hacks-utils-autoloads
elfeed-webkit-autoloads elfeed-autoloads embark-consult-autoloads
consult-autoloads embark-autoloads ement-autoloads emms-autoloads
evil-fringe-mark-autoloads evil-owl-autoloads evil-surround-autoloads
evil-autoloads exwm-autoloads flyspell-correct-autoloads
flyspell-lazy-autoloads fringe-helper-autoloads general-autoloads
gnu-elpa-keyring-update-autoloads gnuplot-autoloads goto-chg-autoloads
helpful-autoloads elisp-refs-autoloads jinx-autoloads
julia-mode-autoloads julia-repl-autoloads jupyter-autoloads
keycast-autoloads ledger-mode-autoloads magit-autoloads pcase
git-commit-autoloads marginalia-autoloads markdown-mode-autoloads
mastodon-autoloads maxima-autoloads minibar-autoloads
modus-themes-autoloads notmuch-autoloads nov-autoloads esxml-autoloads
kv-autoloads dash-functional-autoloads orderless-autoloads
org-caldav-autoloads org-recur-autoloads org-ref-autoloads
citeproc-autoloads biblio-autoloads biblio-core-autoloads avy-autoloads
hydra-autoloads lv-autoloads org-roam-autoloads emacsql-autoloads
org-upcoming-modeline-autoloads org-ql-autoloads
org-super-agenda-autoloads osm-autoloads ov-autoloads
ox-pandoc-autoloads ht-autoloads parsebib-autoloads pass-autoloads
f-autoloads password-store-otp-autoloads password-store-autoloads
peg-autoloads persist-autoloads persist-state-autoloads
plantuml-mode-autoloads plz-autoloads popper-autoloads queue-autoloads
request-autoloads simple-httpd-autoloads string-inflection-autoloads
svg-lib-autoloads taxy-magit-section-autoloads taxy-autoloads
magit-section-autoloads tracking-autoloads transient-autoloads
dash-autoloads twittering-mode-autoloads use-package-autoloads
bind-key-autoloads vertico-autoloads visual-fill-column-autoloads
websocket-autoloads which-key-autoloads with-editor-autoloads info
compat-autoloads xelb-autoloads zmq-autoloads package browse-url url
url-proxy url-privacy url-expand url-methods url-history url-cookie
generate-lisp-file url-domsuf url-util mailcap url-handlers url-parse
auth-source cl-seq eieio eieio-core cl-macs password-cache json subr-x
map byte-opt gv bytecomp byte-compile url-vars cl-loaddefs cl-lib rmc
iso-transl tooltip cconv eldoc paren electric uniquify ediff-hook
vc-hooks lisp-float-type elisp-mode mwheel term/x-win x-win
term/common-win x-dnd tool-bar dnd fontset image regexp-opt fringe
tabulated-list replace newcomment text-mode lisp-mode prog-mode register
page tab-bar menu-bar rfn-eshadow isearch easymenu timer select
scroll-bar mouse jit-lock font-lock syntax font-core term/tty-colors
frame minibuffer nadvice seq simple cl-generic indonesian philippine
cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao
korean japanese eucjp-ms cp51932 hebrew greek romanian slovak czech
european ethiopic indian cyrillic chinese composite emoji-zwj charscript
charprop case-table epa-hook jka-cmpr-hook help abbrev obarray oclosure
cl-preloaded button loaddefs theme-loaddefs faces cus-face macroexp
files window text-properties overlay sha1 md5 base64 format env
code-pages mule custom widget keymap hashtable-print-readable backquote
threads xwidget-internal dbusbind inotify lcms2 dynamic-setting
system-font-setting font-render-setting cairo gtk x-toolkit xinput2 x
multi-tty move-toolbar make-network-process native-compile emacs)

Memory information:
((conses 16 9157701 5008251)
 (symbols 48 107945 56)
 (strings 32 871264 416197)
 (string-bytes 1 38152774)
 (vectors 16 438360)
 (vector-slots 8 9234957 2258167)
 (floats 8 4912 64642)
 (intervals 56 498539 30564)
 (buffers 976 280))
-- 
Eric S Fraga via gnus (Emacs 30.0.50 2023-07-10) on Debian 12.0



Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#64681; Package emacs. (Mon, 17 Jul 2023 13:11:01 GMT) Full text and rfc822 format available.

Message #8 received at 64681 <at> debbugs.gnu.org (full text, mbox):

From: Stefan Monnier <monnier <at> iro.umontreal.ca>
To: "Fraga, Eric" <e.fraga <at> ucl.ac.uk>
Cc: 64681 <at> debbugs.gnu.org
Subject: Re: bug#64681: 30.0.50; slow saving of scores when leaving an nnml
 group in gnus
Date: Mon, 17 Jul 2023 09:10:25 -0400
> A significant amount of time is taken saving scores, as far as I can
> tell.  I use adaptive scoring.  Nothing with respect to scoring has
> changed in my configuration in some time (years probably).

If you could send me your biggest scoring file I could try and reproduce
it locally.

I understand it contains private information, so you might want to
"sanitize" it first e.g. by doing a search&replace such as

    C-u M-% ".+" RET "xxxx" RET

[ Maybe you'll need to tweak the regexp, e.g. if you have strings that
  contain the double quote character or that span more than one line.
  E.g. maybe search for \" before doing the above.  If you need more
  help with that, let me know.  ]

> The offending function appears to be "lisp--local-defform-body-p" with
> large memory and cpu use.

Indeed.

> After discussion on the gnus mailing list, the culprit would appear to
> be the pretty-printing.  Setting pp-default-function to 'pp-28 instead
> of 'pp-fill restores the behaviour to what is desirable in terms of
> speed.

Yup, the underlying difference is that the new `pp-fill` uses
`lisp-indent-line` whereas the old code (`pp-28`) uses
`lisp-indent-region`.  In most cases, the algorithmic complexity of
calling `lisp-indent-line` on every line of a region should be the same
as that of `lisp-indent-region`, but sometimes performance bugs creep
in :-(


        Stefan





This bug report was last modified 1 year and 129 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.