GNU bug report logs - #31853
27.0.50; binding case-fold-search is slow when there are many buffers

Previous Next

Package: emacs;

Reported by: Aaron Jensen <aaronjensen <at> gmail.com>

Date: Sat, 16 Jun 2018 01:43:01 UTC

Severity: normal

Found in version 27.0.50

Done: Aaron Jensen <aaronjensen <at> gmail.com>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 31853 in the body.
You can then email your comments to 31853 AT debbugs.gnu.org in the normal way.

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#31853; Package emacs. (Sat, 16 Jun 2018 01:43:01 GMT) Full text and rfc822 format available.

Acknowledgement sent to Aaron Jensen <aaronjensen <at> gmail.com>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Sat, 16 Jun 2018 01:43:01 GMT) Full text and rfc822 format available.

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

From: Aaron Jensen <aaronjensen <at> gmail.com>
To: bug-gnu-emacs <at> gnu.org
Subject: 27.0.50; binding case-fold-search is slow when there are many buffers
Date: Fri, 15 Jun 2018 18:42:09 -0700
This is related to or maybe is bug#18522, which supposedly was fixed,
but it is unclear from the thread if just the usage of case-fold-search was
fixed or if the slow binding was meant to have been fixed.

I ran into this while tracking down why my org-agenda gets slower and
slower the longer I have emacs open.

(benchmark 1 '(let ((case-fold-search t)) t))

is roughly 1ms on a longer running emacs and .02ms on a fresh emacs.

My (length (buffer-list)) is 91 on the longer running emacs and 23 on
the fresh.

I don't know how to tell the length of my all_buffers or to see how many
killed buffers I have.

Any advice on how to further troubleshoot?

Thanks!


In GNU Emacs 27.0.50 (build 1, x86_64-apple-darwin17.6.0, NS appkit-1561.40 Version 10.13.5 (Build 17F77))
 of 2018-06-07 built on aaron-mbt.local
Repository revision: e2a98002020369cf0c09c7acf8557290e867705f
Windowing system distributor 'Apple', version 10.3.1561
System Description:  Mac OS X 10.13.5

Recent messages:
File ~/.emacs.d/.cache/work.org_archive no longer exists!
Wrote /Users/aaronjensen/.emacs.d/.cache/work.org_archive
Added 7 events for today
Saving file /Users/aaronjensen/.emacs.d/.cache/personal.org...
Wrote /Users/aaronjensen/.emacs.d/.cache/personal.org
Added 7 events for today
Saving file /Users/aaronjensen/.emacs.d/.cache/work.org...
Wrote /Users/aaronjensen/.emacs.d/.cache/work.org
Added 7 events for today
Mark set

Configured using:
 'configure --disable-dependency-tracking --disable-silent-rules
 --enable-locallisppath=/usr/local/share/emacs/site-lisp
 --infodir=/usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/info/emacs
 --prefix=/usr/local/Cellar/emacs-plus/HEAD-e2a9800 --with-xml2
 --without-dbus --with-gnutls --with-imagemagick --with-modules
 --with-rsvg --with-ns --disable-ns-self-contained'

Configured features:
RSVG IMAGEMAGICK NOTIFY ACL GNUTLS LIBXML2 ZLIB TOOLKIT_SCROLL_BARS NS
MODULES THREADS

Important settings:
  value of $LANG: en_US.UTF-8
  locale-coding-system: utf-8-unix

Major mode: Emacs-Lisp

Minor modes in effect:
  auto-compile-mode: t
  elisp-slime-nav-mode: t
  eros-mode: t
  lispyville-mode: t
  lispy-mode: t
  nameless-mode: t
  eval-sexp-fu-flash-mode: t
  global-magit-file-mode: t
  magit-auto-revert-mode: t
  diff-auto-refine-mode: t
  company-statistics-mode: t
  company-childframe-mode: t
  goto-address-prog-mode: t
  bug-reference-prog-mode: t
  auto-highlight-symbol-mode: t
  dtrt-indent-mode: t
  flycheck-pos-tip-mode: t
  global-flycheck-mode: t
  highlight-numbers-mode: t
  highlight-parentheses-mode: t
  rainbow-delimiters-mode: t
  show-smartparens-global-mode: t
  show-smartparens-mode: t
  yas-global-mode: t
  yas-minor-mode: t
  pupo-mode: t
  purpose-mode: t
  recentf-mode: t
  desktop-save-mode: t
  ivy-prescient-mode: t
  company-prescient-mode: t
  prescient-persist-mode: t
  company-mode: t
  global-wakatime-mode: t
  wakatime-mode: t
  evil-mc-mode: t
  hl-todo-mode: t
  winner-mode: t
  global-spacemacs-whitespace-cleanup-mode: t
  spacemacs-whitespace-cleanup-mode: t
  ws-butler-global-mode: t
  ws-butler-mode: t
  winum-mode: t
  global-vi-tilde-fringe-mode: t
  vi-tilde-fringe-mode: t
  save-place-mode: t
  savehist-mode: t
  projectile-rails-global-mode: t
  projectile-mode: t
  persp-mode: t
  global-origami-mode: t
  origami-mode: t
  global-git-gutter+-mode: t
  global-git-commit-mode: t
  async-bytecomp-package-mode: t
  flx-ido-mode: t
  eyebrowse-mode: t
  global-evil-surround-mode: t
  evil-surround-mode: t
  evil-lion-mode: t
  evil-escape-mode: t
  global-anzu-mode: t
  anzu-mode: t
  editorconfig-mode: t
  counsel-mode: t
  ivy-mode: t
  delete-selection-mode: t
  clean-aindent-mode: t
  hybrid-mode: t
  which-key-mode: t
  override-global-mode: t
  global-undo-tree-mode: t
  undo-tree-mode: t
  evil-mode: t
  evil-local-mode: t
  spacemacs-leader-override-mode: t
  global-spacemacs-leader-override-mode: t
  global-hl-line-mode: t
  xterm-mouse-mode: t
  global-auto-revert-mode: t
  shell-dirtrack-mode: t
  ido-vertical-mode: t
  global-page-break-lines-mode: t
  page-break-lines-mode: t
  global-eldoc-mode: t
  eldoc-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  column-number-mode: t
  line-number-mode: t
  transient-mark-mode: t
  abbrev-mode: t
  hs-minor-mode: t

Load-path shadows:
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/counsel-20180608.955/counsel hides /Users/aaronjensen/.emacs.d/elpa/27.0/develop/swiper-20180602.1308/counsel
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/ivy-hydra-20180208.912/ivy-hydra hides /Users/aaronjensen/.emacs.d/elpa/27.0/develop/swiper-20180602.1308/ivy-hydra
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/swiper-20180602.1308/ivy hides /Users/aaronjensen/.emacs.d/elpa/27.0/develop/ivy-20180608.849/ivy
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/swiper-20180602.1308/colir hides /Users/aaronjensen/.emacs.d/elpa/27.0/develop/ivy-20180608.849/colir
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/swiper-20180602.1308/ivy-overlay hides /Users/aaronjensen/.emacs.d/elpa/27.0/develop/ivy-20180608.849/ivy-overlay
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/ht-20180129.1434/ht hides /Users/aaronjensen/.emacs.d/core/libs/ht
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/inf-ruby-20180521.648/inf-ruby hides /usr/local/share/emacs/site-lisp/ruby/inf-ruby
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/ob-stan hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/ob-stan
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/ob-exp hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/ob-exp
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/ob-J hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/ob-J
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/org-eshell hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/org-eshell
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/ob-emacs-lisp hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/ob-emacs-lisp
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/org-gnus hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/org-gnus
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/ob-css hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/ob-css
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/ob-lob hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/ob-lob
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/ob-forth hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/ob-forth
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/org-macs hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/org-macs
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/ob hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/ob
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/org-version hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/org-version
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/ob-scheme hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/ob-scheme
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/ox hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/ox
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/ob-abc hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/ob-abc
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/ob-C hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/ob-C
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/org-capture hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/org-capture
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/ob-ref hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/ob-ref
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/ob-clojure hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/ob-clojure
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/org-mouse hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/org-mouse
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/ob-ledger hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/ob-ledger
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/org-ctags hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/org-ctags
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/org-entities hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/org-entities
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/org-archive hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/org-archive
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/ob-screen hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/ob-screen
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/ob-haskell hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/ob-haskell
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/ob-asymptote hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/ob-asymptote
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/org-mhe hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/org-mhe
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/org-table hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/org-table
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/ob-keys hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/ob-keys
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/ox-org hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/ox-org
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/org-plot hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/org-plot
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/ob-awk hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/ob-awk
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/ob-groovy hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/ob-groovy
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/ob-octave hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/ob-octave
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/org-faces hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/org-faces
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/org-colview hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/org-colview
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/ob-R hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/ob-R
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/org-timer hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/org-timer
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/ob-ebnf hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/ob-ebnf
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/org-mobile hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/org-mobile
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/ob-fortran hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/ob-fortran
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/ob-shell hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/ob-shell
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/ob-perl hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/ob-perl
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/ob-sqlite hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/ob-sqlite
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/ob-sed hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/ob-sed
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/org-list hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/org-list
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/ob-ruby hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/ob-ruby
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/ob-eval hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/ob-eval
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/org-habit hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/org-habit
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/org-clock hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/org-clock
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/ox-html hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/ox-html
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/org-src hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/org-src
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/ob-lisp hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/ob-lisp
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/ob-ditaa hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/ob-ditaa
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/org-pcomplete hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/org-pcomplete
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/org-lint hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/org-lint
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/org-rmail hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/org-rmail
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/ox-latex hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/ox-latex
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/ob-sass hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/ob-sass
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/ob-io hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/ob-io
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/ob-tangle hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/ob-tangle
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/ob-calc hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/ob-calc
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/ob-java hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/ob-java
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/ox-icalendar hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/ox-icalendar
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/org-eww hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/org-eww
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/ox-md hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/ox-md
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/ox-beamer hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/ox-beamer
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/org-element hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/org-element
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/org-protocol hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/org-protocol
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/ob-mscgen hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/ob-mscgen
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/ob-gnuplot hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/ob-gnuplot
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/ob-latex hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/ob-latex
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/org-id hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/org-id
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/ob-vala hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/ob-vala
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/ox-man hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/ox-man
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/org-feed hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/org-feed
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/ob-lua hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/ob-lua
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/ob-table hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/ob-table
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/ob-ocaml hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/ob-ocaml
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/ob-coq hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/ob-coq
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/ob-picolisp hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/ob-picolisp
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/org-indent hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/org-indent
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/ob-lilypond hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/ob-lilypond
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/ob-matlab hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/ob-matlab
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/org-datetree hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/org-datetree
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/ob-python hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/ob-python
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/org-bbdb hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/org-bbdb
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/ob-makefile hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/ob-makefile
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/org-duration hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/org-duration
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/org-agenda hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/org-agenda
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/ob-dot hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/ob-dot
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/ob-js hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/ob-js
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/ox-publish hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/ox-publish
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/org-inlinetask hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/org-inlinetask
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/ob-org hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/ob-org
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/ob-core hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/ob-core
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/org-compat hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/org-compat
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/org-docview hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/org-docview
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/ox-odt hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/ox-odt
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/ob-plantuml hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/ob-plantuml
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/ox-ascii hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/ox-ascii
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/org-loaddefs hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/org-loaddefs
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/org-w3m hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/org-w3m
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/org-bibtex hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/org-bibtex
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/org-info hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/org-info
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/ob-hledger hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/ob-hledger
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/ob-maxima hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/ob-maxima
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/org hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/org
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/org-macro hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/org-macro
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/ob-sql hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/ob-sql
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/org-attach hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/org-attach
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/ob-processing hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/ob-processing
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/ox-texinfo hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/ox-texinfo
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/org-irc hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/org-irc
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/org-crypt hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/org-crypt
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/org-footnote hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/org-footnote
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/org-install hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/org-install
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/ob-comint hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/ob-comint
/Users/aaronjensen/.emacs.d/elpa/27.0/develop/org-plus-contrib-20180611/ob-shen hides /usr/local/Cellar/emacs-plus/HEAD-e2a9800/share/emacs/27.0.50/lisp/org/ob-shen

Features:
(shadow sort mail-extr emacsbug sendmail hippie-exp cl-print debug
whitespace org-projectile org-category-capture org-capture ace-window
eieio-opt speedbar sb-image ezimage dframe benchmark cal-iso
flatui-theme monokai-theme eterm-256color linum shell-pop term ehelp
evil-matchit-ruby mwim gravatar rainbow-mode magit-bookmark bookmark
descr-text tramp-sh browse-url magithub-completion mmm-mode mmm-univ
mmm-class mmm-region mmm-auto mmm-vars mmm-utils mmm-compat
network-stream starttls url-cache epa-file magithub magithub-dash
magithub-notification magithub-issue-view magithub-comment magithub-repo
magithub-orgs magithub-issue-tricks magithub-issue-post
magithub-edit-mode magithub-ci magithub-issue magithub-label
magithub-user magithub-core magithub-faces magithub-settings
smartparens-markdown markdown-mode ghub+ apiwrap apropos
evil-nerd-commenter evil-nerd-commenter-operator evil-nerd-commenter-sdk
evil-matchit-html evil-matchit-simple evil-matchit-template tabify
prettier-js smex fill-column-indicator magit-gitflow company-tng
enh-ruby-mode misearch multi-isearch tide tide-lv typescript-mode
company-web-html company-web company-css web-completion-data emmet-mode
web-mode appt diary-lib diary-loaddefs org-duration company-robe robe
rubocop ruby-refactor ruby-tools evil-matchit evil-matchit-sdk overseer
auto-compile packed elisp-slime-nav eros flycheck-package package-lint
finder lispyville lispy lispy-inline avy edebug lispy-tags mode-local
nameless eval-sexp-fu highlight font-lock+ frame-fns avoid company-lua
smartparens-lua lua-mode alchemist alchemist-macroexpand
alchemist-company alchemist-help alchemist-complete alchemist-refcard
alchemist-phoenix alchemist-compile alchemist-iex alchemist-message
alchemist-hooks alchemist-hex alchemist-mix alchemist-info
alchemist-goto alchemist-scope alchemist-eval alchemist-interact
alchemist-server alchemist-execute alchemist-report alchemist-test-mode
alchemist-project alchemist-file alchemist-key alchemist-utils
flycheck-dialyxir smartparens-elixir elixir-mode elixir-format pkg-info
epl elixir-smie sh-script org-agenda executable company-emoji
company-emoji-list org-eldoc evil-org org-table ob-C ob-shell ob-js
ob-ruby org-bullets org-download toc-org typo face-remap
org-variable-pitch org-indent image-file org-rmail org-mhe org-irc
org-info org-gnus nnir gnus-sum gnus-group gnus-undo gnus-start
gnus-cloud nnimap nnmail mail-source utf7 netrc nnoo gnus-spec gnus-int
gnus-range gnus-win gnus nnheader org-docview doc-view jka-compr
org-bibtex bibtex org-bbdb org-w3m org-checklist org-inlinetask org-gcal
org-archive smartparens-org ob-async ob-elixir ob-http ob-http-mode
ob-restclient restclient ox-gfm ox-md ox-reveal 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 ox-html table ox-ascii
ox-publish ox orgit org-element avl-tree generator evil-magit git-rebase
magit-gh-pulls gh gh-users gh-issues gh-pulls gh-repos gh-comments
gh-gist gh-oauth gh-api logito gh-cache gh-auth gh-url gh-profile
magit-obsolete magit-blame magit-stash magit-bisect magit-remote
magit-commit magit-sequence magit-notes magit-worktree magit-tag
magit-merge magit-branch magit-reset magit-collab ghub url-http tls
gnutls url-gw nsm url-auth magit-files magit-refs magit-status magit
magit-repos magit-apply magit-wip magit-log magit-diff smerge-mode
magit-core magit-autorevert magit-process magit-margin magit-mode org
org-macro org-footnote org-pcomplete org-list org-faces org-entities
org-version ob-emacs-lisp ob ob-tangle org-src ob-ref ob-lob ob-table
ob-keys ob-exp ob-comint ob-core ob-eval org-compat org-macs
org-loaddefs cal-menu calendar cal-loaddefs request-deferred deferred
request url url-proxy url-privacy url-expand url-methods url-history
url-cookie url-domsuf mailcap alert log4e notifications dbus xml gntp
shrink-path vc-git diff-mode eslintd-fix flow-minor-mode flycheck-flow
company-statistics company-childframe company-files company-keywords
company-capf company-dabbrev-code company-dabbrev company-flow js-doc
iswitchb js2-refactor js2r-paredit js2r-conveniences js2r-conditionals
js2r-wrapping js2r-functions js2r-vars multiple-cursors-core js2r-iife
js2r-formatting js2r-helpers skewer-mode cache-table simple-httpd pp
url-util add-node-modules-path js2-imenu-extras goto-addr bug-reference
auto-highlight-symbol dtrt-indent evil-lisp-state flycheck-credo
flycheck-posframe posframe flycheck-pos-tip pos-tip flycheck-jest
flycheck find-func highlight-numbers parent-mode highlight-parentheses
hideshow rainbow-delimiters smartparens-config smartparens-javascript
smartparens-text smartparens-ruby smartparens-html smartparens
yasnippet-snippets yasnippet elec-pair cursor-sensor rjsx-mode js2-mode
js sgml-mode dom cc-mode cc-fonts cc-guess cc-menus cc-cmds cc-styles
cc-align cc-engine cc-vars cc-defs editorconfig-core
editorconfig-core-handle editorconfig-fnmatch colir counsel-projectile
spacemacs-purpose-popwin window-purpose-x imenu-list imenu
window-purpose window-purpose-fixes window-purpose-prefix-overload
window-purpose-switch window-purpose-layout window-purpose-core
window-purpose-configuration window-purpose-utils recentf tree-widget
desktop frameset ivy-prescient company-prescient prescient company
wakatime-mode contextual-menubar quiet-emacs fill-or-unfill
init-macos-terminal-copy-paste init-terminal-cursor
evil-terminal-cursor-changer init-org init-magit evil-mc
evil-mc-command-execute evil-mc-command-record evil-mc-cursor-make
evil-mc-region evil-mc-cursor-state evil-mc-undo evil-mc-vars
evil-mc-known-commands evil-mc-common hl-todo persistent-soft list-utils
pcache eieio-base font-utils winner zone xterm-color
spacemacs-whitespace-cleanup ws-butler winum vi-tilde-fringe
unicode-fonts tmux string-inflection saveplace savehist ruby-test-mode
pcre2el rxt re-builder projectile-rails rake f inflections inf-ruby
ruby-mode smie projectile grep ibuf-ext ibuffer ibuffer-loaddefs popwin
persp-mode osx-trash origami origami-parsers s ivy-hydra image-mode
google-c-style git-gutter-fringe+ fringe-helper git-gutter+ git-commit
with-editor server magit-git magit-section magit-utils crm magit-popup
async-bytecomp async log-edit message rmc puny rfc822 mml mml-sec epa
gnus-util rmail rmail-loaddefs mailabbrev mail-utils gmm-utils
mailheader pcvs-util add-log flx-ido eyebrowse dash evil-surround
evil-numbers evil-lion evil-indent-plus evil-goggles pulse evil-exchange
evil-escape evil-args evil-anzu anzu editorconfig noutline outline
doom-modeline powerline-separators color all-the-icons
all-the-icons-faces data-material data-weathericons data-octicons
data-fileicons data-faicons data-alltheicons memoize counsel dired
dired-loaddefs compile esh-util etags xref project swiper ivy flx delsel
ivy-overlay ffap clean-aindent-mode gh-common marshal fix-word rx
docker-tramp tramp-cache hybrid-mode evil-evilified-state which-key
use-package use-package-ensure use-package-delight use-package-diminish
use-package-bind-key bind-key use-package-core hydra lv
exec-path-from-shell cus-edit cus-start cus-load time-date evil
evil-integration undo-tree diff evil-maps evil-commands reveal flyspell
ispell evil-jumps evil-command-window evil-types evil-search evil-ex
evil-macros evil-repeat evil-states evil-core evil-common windmove
thingatpt rect evil-digraphs diminish evil-vars bind-map quelpa
mm-decode mm-bodies mm-encode mail-parse rfc2231 rfc2047 rfc2045 mm-util
ietf-drums mail-prsvr lisp-mnt help-fns radix-tree hl-line xt-mouse
autorevert filenotify disp-table wid-edit night-owl-theme info
finder-inf patch-server init-sass init-php init-html init-evil tramp
trampver tramp-compat tramp-loaddefs shell pcomplete comint ansi-color
ring parse-time format-spec ido-vertical-mode ido core-spacemacs
core-use-package-ext core-transient-state core-micro-state core-toggle
core-keybindings core-fonts-support core-themes-support
core-display-init core-jump core-release-management core-custom-settings
core-configuration-layer eieio-compat core-progress-bar
core-spacemacs-buffer core-funcs core-dotspacemacs ht cl warnings
package let-alist cl-extra help-mode url-handlers url-parse auth-source
cl-seq password-cache json map url-vars seq eieio byte-opt bytecomp
byte-compile cconv eieio-core eieio-loaddefs epg epg-config
core-command-line pcase core-debug edmacro kmacro derived cl-macs gv
advice profiler easymenu cl-loaddefs cl-lib core-hooks page-break-lines
easy-mmode core-emacs-backports subr-x core-dumper tooltip eldoc
electric uniquify ediff-hook vc-hooks lisp-float-type mwheel term/ns-win
ns-win ucs-normalize mule-util term/common-win tool-bar dnd fontset
image regexp-opt fringe tabulated-list replace newcomment text-mode
elisp-mode lisp-mode prog-mode register page menu-bar rfn-eshadow
isearch timer select scroll-bar mouse jit-lock font-lock syntax facemenu
font-core term/tty-colors frame cl-generic 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 charscript charprop case-table epa-hook
jka-cmpr-hook help simple abbrev obarray minibuffer cl-preloaded nadvice
loaddefs button faces cus-face macroexp files text-properties overlay
sha1 md5 base64 format env code-pages mule custom widget
hashtable-print-readable backquote kqueue cocoa ns multi-tty
make-network-process emacs)

Memory information:
((conses 16 3175266 2241761)
 (symbols 48 114727 1)
 (miscs 40 20743 83045)
 (strings 32 579761 156024)
 (string-bytes 1 21572512)
 (vectors 16 157664)
 (vector-slots 8 3577462 304650)
 (floats 8 1461 3826)
 (intervals 56 255580 28071)
 (buffers 992 5514))




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#31853; Package emacs. (Sat, 16 Jun 2018 02:11:01 GMT) Full text and rfc822 format available.

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

From: Aaron Jensen <aaronjensen <at> gmail.com>
To: 31853 <at> debbugs.gnu.org
Subject: Re: (27.0.50;
 binding case-fold-search is slow when there are many buffers)
Date: Fri, 15 Jun 2018 19:10:08 -0700
This is apparently the second time I've spent time tracking down perf
issues that have led to this same issue:

https://debbugs.gnu.org/cgi/bugreport.cgi?bug=23928

Is it possible to improve this somehow? In this instance it's actually
org-mode that's binding case-fold-search in a tight loop in
org-scan-tags.

Thanks,

Aaron




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#31853; Package emacs. (Sat, 16 Jun 2018 02:18:01 GMT) Full text and rfc822 format available.

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

From: Noam Postavsky <npostavs <at> gmail.com>
To: Aaron Jensen <aaronjensen <at> gmail.com>
Cc: 31853 <at> debbugs.gnu.org
Subject: Re: bug#31853: 27.0.50;
 binding case-fold-search is slow when there are many buffers
Date: Fri, 15 Jun 2018 22:17:44 -0400
Aaron Jensen <aaronjensen <at> gmail.com> writes:

> I don't know how to tell the length of my all_buffers or to see how many
> killed buffers I have.

Try applying Martin's patch from #18522:

https://debbugs.gnu.org/cgi/bugreport.cgi?bug=18522#198

Then you can do M-: (killed-buffer-names) RET.

Although my understanding of the resolution of Bug#18522 is that dead
buffers should no longer affect the time for let-binding variables, just
live ones (but maybe the fix missed something).





Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#31853; Package emacs. (Sat, 16 Jun 2018 06:46:02 GMT) Full text and rfc822 format available.

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

From: Eli Zaretskii <eliz <at> gnu.org>
To: Aaron Jensen <aaronjensen <at> gmail.com>
Cc: 31853 <at> debbugs.gnu.org
Subject: Re: bug#31853: 27.0.50;
 binding case-fold-search is slow when there are many buffers
Date: Sat, 16 Jun 2018 09:45:20 +0300
> From: Aaron Jensen <aaronjensen <at> gmail.com>
> Date: Fri, 15 Jun 2018 18:42:09 -0700
> 
> This is related to or maybe is bug#18522, which supposedly was fixed,

It is related to that bug only if you have a lot of dead buffers.  The
URL pointed out by Noam includes a patch that would allow you to count
dead buffers you have; can you do that?

> but it is unclear from the thread if just the usage of case-fold-search was
> fixed or if the slow binding was meant to have been fixed.

None of the above, AFAIU.  Gnus was fixed to not hit this problem.

> (benchmark 1 '(let ((case-fold-search t)) t))
> 
> is roughly 1ms on a longer running emacs and .02ms on a fresh emacs.
> 
> My (length (buffer-list)) is 91 on the longer running emacs and 23 on
> the fresh.

In a session that has 291 buffers, I get 2.8 microseconds, whereas in
fresh "emacs -Q", I get 1.5 microseconds.  This is 3 orders of
magnitude faster than what you get, and the difference between a large
session and a new one is much smaller.

IOW, there's some factor here that is not just the number of buffers
you have, I think.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#31853; Package emacs. (Sat, 16 Jun 2018 06:53:01 GMT) Full text and rfc822 format available.

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

From: Eli Zaretskii <eliz <at> gnu.org>
To: Aaron Jensen <aaronjensen <at> gmail.com>
Cc: 31853 <at> debbugs.gnu.org
Subject: Re: bug#31853: 27.0.50;
 binding case-fold-search is slow when there are many buffers
Date: Sat, 16 Jun 2018 09:51:53 +0300
[Please don't change the Subject in significant ways.]

> From: Aaron Jensen <aaronjensen <at> gmail.com>
> Date: Fri, 15 Jun 2018 19:10:08 -0700
> 
> This is apparently the second time I've spent time tracking down perf
> issues that have led to this same issue:
> 
> https://debbugs.gnu.org/cgi/bugreport.cgi?bug=23928
> 
> Is it possible to improve this somehow?

We don't yet understand what is there to improve.  Please follow up on
the suggestions elsewhere in this thread to collect more data about
the reason(s) for the slow let-binding in your case.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#31853; Package emacs. (Sat, 16 Jun 2018 06:54:01 GMT) Full text and rfc822 format available.

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

From: Eli Zaretskii <eliz <at> gnu.org>
To: Noam Postavsky <npostavs <at> gmail.com>
Cc: 31853 <at> debbugs.gnu.org, aaronjensen <at> gmail.com
Subject: Re: bug#31853: 27.0.50;
 binding case-fold-search is slow when there are many buffers
Date: Sat, 16 Jun 2018 09:52:57 +0300
> From: Noam Postavsky <npostavs <at> gmail.com>
> Date: Fri, 15 Jun 2018 22:17:44 -0400
> Cc: 31853 <at> debbugs.gnu.org
> 
> Although my understanding of the resolution of Bug#18522 is that dead
> buffers should no longer affect the time for let-binding variables, just
> live ones (but maybe the fix missed something).

Which fix is that?  I think I'm missing it, because I don't think that
bug resolved the general problem.  Maybe I'm forgetting something.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#31853; Package emacs. (Sat, 16 Jun 2018 07:40:01 GMT) Full text and rfc822 format available.

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

From: Aaron Jensen <aaronjensen <at> gmail.com>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 31853 <at> debbugs.gnu.org
Subject: Re: bug#31853: 27.0.50; binding case-fold-search is slow when there
 are many buffers
Date: Sat, 16 Jun 2018 00:39:00 -0700
On Fri, Jun 15, 2018 at 11:45 PM Eli Zaretskii <eliz <at> gnu.org> wrote:
> It is related to that bug only if you have a lot of dead buffers.  The
> URL pointed out by Noam includes a patch that would allow you to count
> dead buffers you have; can you do that?

I've got it compiled in now and will report back when it repros as
badly as it did originally.

> In a session that has 291 buffers, I get 2.8 microseconds, whereas in
> fresh "emacs -Q", I get 1.5 microseconds.  This is 3 orders of
> magnitude faster than what you get, and the difference between a large
> session and a new one is much smaller.

I think I missed a zero on my original fresh emacs report. The report
of 1ms per for a long running emacs was correct though.
These should be accurate:
On emacs -Q I get 2 microseconds.
On a newly launched emacs w/ my config I get 3 microseconds with 9
buffers and 1 killed buffer.
On an emacs I've been running for a bit I get 40 microseconds with 71
buffers and 237 killed buffers.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#31853; Package emacs. (Sat, 16 Jun 2018 07:54:01 GMT) Full text and rfc822 format available.

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

From: Eli Zaretskii <eliz <at> gnu.org>
To: Aaron Jensen <aaronjensen <at> gmail.com>
Cc: 31853 <at> debbugs.gnu.org
Subject: Re: bug#31853: 27.0.50; binding case-fold-search is slow when there
 are many buffers
Date: Sat, 16 Jun 2018 10:53:18 +0300
> From: Aaron Jensen <aaronjensen <at> gmail.com>
> Date: Sat, 16 Jun 2018 00:39:00 -0700
> Cc: 31853 <at> debbugs.gnu.org
> 
> > In a session that has 291 buffers, I get 2.8 microseconds, whereas in
> > fresh "emacs -Q", I get 1.5 microseconds.  This is 3 orders of
> > magnitude faster than what you get, and the difference between a large
> > session and a new one is much smaller.
> 
> I think I missed a zero on my original fresh emacs report. The report
> of 1ms per for a long running emacs was correct though.
> These should be accurate:
> On emacs -Q I get 2 microseconds.
> On a newly launched emacs w/ my config I get 3 microseconds with 9
> buffers and 1 killed buffer.
> On an emacs I've been running for a bit I get 40 microseconds with 71
> buffers and 237 killed buffers.

In https://debbugs.gnu.org/cgi/bugreport.cgi?bug=18522#201 I proposed
a change to set-default that would use FOR_EACH_LIVE_BUFFER.  Could
you see if that change helps in your case?




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#31853; Package emacs. (Sat, 16 Jun 2018 13:53:02 GMT) Full text and rfc822 format available.

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

From: Noam Postavsky <npostavs <at> gmail.com>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 31853 <at> debbugs.gnu.org, aaronjensen <at> gmail.com
Subject: Re: bug#31853: 27.0.50;
 binding case-fold-search is slow when there are many buffers
Date: Sat, 16 Jun 2018 09:51:57 -0400
Eli Zaretskii <eliz <at> gnu.org> writes:

>> Although my understanding of the resolution of Bug#18522 is that dead
>> buffers should no longer affect the time for let-binding variables, just
>> live ones (but maybe the fix missed something).
>
> Which fix is that?  I think I'm missing it, because I don't think that
> bug resolved the general problem.  Maybe I'm forgetting something.

Oh, nevermind, I had gathered from reading the bug#18522 thread that
set-internal's FOR_EACH_BUFFER was replaced with FOR_EACH_LIVE_BUFFER,
but actually looking at the code I see it isn't so.





Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#31853; Package emacs. (Sat, 16 Jun 2018 14:56:01 GMT) Full text and rfc822 format available.

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

From: Aaron Jensen <aaronjensen <at> gmail.com>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 31853 <at> debbugs.gnu.org
Subject: Re: bug#31853: 27.0.50; binding case-fold-search is slow when there
 are many buffers
Date: Sat, 16 Jun 2018 07:54:46 -0700
[Message part 1 (text/plain, inline)]
On Sat, Jun 16, 2018 at 12:53 AM Eli Zaretskii <eliz <at> gnu.org> wrote:
> In https://debbugs.gnu.org/cgi/bugreport.cgi?bug=18522#201 I proposed
> a change to set-default that would use FOR_EACH_LIVE_BUFFER.  Could
> you see if that change helps in your case?

So far so good. I'll try it out for a few more days and see if it
stays fast. The patch I'm trying is attached if anyone else wants to
give it a go or check to ensure I didn't do something wrong in it.
[0001-Test.patch (application/octet-stream, attachment)]

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#31853; Package emacs. (Sun, 17 Jun 2018 12:38:02 GMT) Full text and rfc822 format available.

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

From: Aaron Jensen <aaronjensen <at> gmail.com>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 31853 <at> debbugs.gnu.org
Subject: Re: bug#31853: 27.0.50; binding case-fold-search is slow when there
 are many buffers
Date: Sun, 17 Jun 2018 05:37:41 -0700
> On Sat, Jun 16, 2018 at 12:53 AM Eli Zaretskii <eliz <at> gnu.org> wrote:
> > In https://debbugs.gnu.org/cgi/bugreport.cgi?bug=18522#201 I proposed
> > a change to set-default that would use FOR_EACH_LIVE_BUFFER.  Could
> > you see if that change helps in your case?

With 148 live buffers and 6 hours of uptime, I'm up to about 23
microseconds. Still a far cry from 1ms. I'll keep testing.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#31853; Package emacs. (Sun, 17 Jun 2018 13:12:02 GMT) Full text and rfc822 format available.

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

From: Eli Zaretskii <eliz <at> gnu.org>
To: Aaron Jensen <aaronjensen <at> gmail.com>
Cc: 31853 <at> debbugs.gnu.org
Subject: Re: bug#31853: 27.0.50; binding case-fold-search is slow when there
 are many buffers
Date: Sun, 17 Jun 2018 16:11:26 +0300
> From: Aaron Jensen <aaronjensen <at> gmail.com>
> Date: Sun, 17 Jun 2018 05:37:41 -0700
> Cc: 31853 <at> debbugs.gnu.org
> 
> > On Sat, Jun 16, 2018 at 12:53 AM Eli Zaretskii <eliz <at> gnu.org> wrote:
> > > In https://debbugs.gnu.org/cgi/bugreport.cgi?bug=18522#201 I proposed
> > > a change to set-default that would use FOR_EACH_LIVE_BUFFER.  Could
> > > you see if that change helps in your case?
> 
> With 148 live buffers and 6 hours of uptime, I'm up to about 23
> microseconds. Still a far cry from 1ms. I'll keep testing.

Thanks.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#31853; Package emacs. (Sat, 23 Jun 2018 05:24:01 GMT) Full text and rfc822 format available.

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

From: Aaron Jensen <aaronjensen <at> gmail.com>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 31853 <at> debbugs.gnu.org
Subject: Re: bug#31853: 27.0.50; binding case-fold-search is slow when there
 are many buffers
Date: Fri, 22 Jun 2018 22:23:09 -0700
On Sun, Jun 17, 2018 at 6:11 AM Eli Zaretskii <eliz <at> gnu.org> wrote:
>
> > From: Aaron Jensen <aaronjensen <at> gmail.com>
> > Date: Sun, 17 Jun 2018 05:37:41 -0700
> > Cc: 31853 <at> debbugs.gnu.org
> >
> > > On Sat, Jun 16, 2018 at 12:53 AM Eli Zaretskii <eliz <at> gnu.org> wrote:
> > > > In https://debbugs.gnu.org/cgi/bugreport.cgi?bug=18522#201 I proposed
> > > > a change to set-default that would use FOR_EACH_LIVE_BUFFER.  Could
> > > > you see if that change helps in your case?
> >
> > With 148 live buffers and 6 hours of uptime, I'm up to about 23
> > microseconds. Still a far cry from 1ms. I'll keep testing.
>
> Thanks.

I haven't noticed any slowdown yet. It seems to be an improvement. If
you're good with the patch and could provide me with some text to
write in the commit message (I roughly understand what it does, but I
don't know anything about the other ramifications) I can send another
patch. Otherwise, please feel free to use the patch and commit w/ your
own message/name.

Thanks.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#31853; Package emacs. (Sat, 23 Jun 2018 06:55:02 GMT) Full text and rfc822 format available.

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

From: Eli Zaretskii <eliz <at> gnu.org>
To: Aaron Jensen <aaronjensen <at> gmail.com>
Cc: 31853 <at> debbugs.gnu.org
Subject: Re: bug#31853: 27.0.50; binding case-fold-search is slow when there
 are many buffers
Date: Sat, 23 Jun 2018 09:54:07 +0300
> From: Aaron Jensen <aaronjensen <at> gmail.com>
> Date: Fri, 22 Jun 2018 22:23:09 -0700
> Cc: 31853 <at> debbugs.gnu.org
> 
> > > > On Sat, Jun 16, 2018 at 12:53 AM Eli Zaretskii <eliz <at> gnu.org> wrote:
> > > > > In https://debbugs.gnu.org/cgi/bugreport.cgi?bug=18522#201 I proposed
> > > > > a change to set-default that would use FOR_EACH_LIVE_BUFFER.  Could
> > > > > you see if that change helps in your case?
> > >
> > > With 148 live buffers and 6 hours of uptime, I'm up to about 23
> > > microseconds. Still a far cry from 1ms. I'll keep testing.
> >
> > Thanks.
> 
> I haven't noticed any slowdown yet. It seems to be an improvement. If
> you're good with the patch and could provide me with some text to
> write in the commit message (I roughly understand what it does, but I
> don't know anything about the other ramifications) I can send another
> patch. Otherwise, please feel free to use the patch and commit w/ your
> own message/name.

There's no rush.  Let's give this another week, and I will push the
change if no problems come up by that date.

Thanks.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#31853; Package emacs. (Sat, 30 Jun 2018 08:20:01 GMT) Full text and rfc822 format available.

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

From: Eli Zaretskii <eliz <at> gnu.org>
To: aaronjensen <at> gmail.com
Cc: 31853 <at> debbugs.gnu.org
Subject: Re: bug#31853: 27.0.50;
 binding case-fold-search is slow when there are many buffers
Date: Sat, 30 Jun 2018 11:19:53 +0300
> Date: Sat, 23 Jun 2018 09:54:07 +0300
> From: Eli Zaretskii <eliz <at> gnu.org>
> Cc: 31853 <at> debbugs.gnu.org
> 
> > From: Aaron Jensen <aaronjensen <at> gmail.com>
> > Date: Fri, 22 Jun 2018 22:23:09 -0700
> > Cc: 31853 <at> debbugs.gnu.org
> > 
> > > > > On Sat, Jun 16, 2018 at 12:53 AM Eli Zaretskii <eliz <at> gnu.org> wrote:
> > > > > > In https://debbugs.gnu.org/cgi/bugreport.cgi?bug=18522#201 I proposed
> > > > > > a change to set-default that would use FOR_EACH_LIVE_BUFFER.  Could
> > > > > > you see if that change helps in your case?
> > > >
> > > > With 148 live buffers and 6 hours of uptime, I'm up to about 23
> > > > microseconds. Still a far cry from 1ms. I'll keep testing.
> > >
> > > Thanks.
> > 
> > I haven't noticed any slowdown yet. It seems to be an improvement. If
> > you're good with the patch and could provide me with some text to
> > write in the commit message (I roughly understand what it does, but I
> > don't know anything about the other ramifications) I can send another
> > patch. Otherwise, please feel free to use the patch and commit w/ your
> > own message/name.
> 
> There's no rush.  Let's give this another week, and I will push the
> change if no problems come up by that date.

Pushed to master.

Is there anything else to do in this bug, or should it be closed now?

Thanks.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#31853; Package emacs. (Sat, 30 Jun 2018 13:19:02 GMT) Full text and rfc822 format available.

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

From: Stefan Monnier <monnier <at> IRO.UMontreal.CA>
To: Aaron Jensen <aaronjensen <at> gmail.com>
Cc: 31853 <at> debbugs.gnu.org
Subject: Re: bug#31853: (27.0.50;
 binding case-fold-search is slow when there are many buffers)
Date: Sat, 30 Jun 2018 09:18:23 -0400
> Is it possible to improve this somehow? In this instance it's actually
> org-mode that's binding case-fold-search in a tight loop in
> org-scan-tags.

BTW, I think that the idea that let-binding a dynamically-scoped var is
cheap is wrong.
It's basically only cheap when lexical-binding works as well ;-)

So regardless of whether we can speed it up like Eli did just now (by
only looping over the live buffers), the org-scan-tags code that
let-binds it within a tight loop should be fixed.


        Stefan




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#31853; Package emacs. (Sat, 30 Jun 2018 13:54:02 GMT) Full text and rfc822 format available.

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

From: Eli Zaretskii <eliz <at> gnu.org>
To: Stefan Monnier <monnier <at> IRO.UMontreal.CA>
Cc: 31853 <at> debbugs.gnu.org, aaronjensen <at> gmail.com
Subject: Re: bug#31853: (27.0.50;
 binding case-fold-search is slow when there are many buffers)
Date: Sat, 30 Jun 2018 16:53:40 +0300
> From: Stefan Monnier <monnier <at> IRO.UMontreal.CA>
> Date: Sat, 30 Jun 2018 09:18:23 -0400
> Cc: 31853 <at> debbugs.gnu.org
> 
> So regardless of whether we can speed it up like Eli did just now (by
> only looping over the live buffers), the org-scan-tags code that
> let-binds it within a tight loop should be fixed.

I agree.




Reply sent to Aaron Jensen <aaronjensen <at> gmail.com>:
You have taken responsibility. (Sat, 30 Jun 2018 18:24:02 GMT) Full text and rfc822 format available.

Notification sent to Aaron Jensen <aaronjensen <at> gmail.com>:
bug acknowledged by developer. (Sat, 30 Jun 2018 18:24:04 GMT) Full text and rfc822 format available.

Message #58 received at 31853-done <at> debbugs.gnu.org (full text, mbox):

From: Aaron Jensen <aaronjensen <at> gmail.com>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 31853-done <at> debbugs.gnu.org
Subject: Re: bug#31853: 27.0.50; binding case-fold-search is slow when there
 are many buffers
Date: Sat, 30 Jun 2018 11:22:53 -0700
On Sat, Jun 30, 2018 at 1:19 AM Eli Zaretskii <eliz <at> gnu.org> wrote:
> Pushed to master.
>
> Is there anything else to do in this bug, or should it be closed now?

Thanks! I'm happy to close. I do agree with Stefan as well that it
should be fixed in org, but it was non-obvious to me as the loop
depends on two different values of case-fold-search :/




bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Sun, 29 Jul 2018 11:24:05 GMT) Full text and rfc822 format available.

This bug report was last modified 5 years and 245 days ago.

Previous Next


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