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
bug-gnu-emacs <at> gnu.org
:bug#64681
; Package emacs
.
(Mon, 17 Jul 2023 12:07:02 GMT) Full text and rfc822 format available."Fraga, Eric" <e.fraga <at> ucl.ac.uk>
: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
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
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.