GNU bug report logs - #78520
31.0.50; Performance issue in dired+isearch with dired-isearch-filenames

Previous Next

Package: emacs;

Reported by: Ergus <spacibba <at> aol.com>

Date: Tue, 20 May 2025 23:34:02 UTC

Severity: normal

Tags: fixed

Found in version 31.0.50

Done: Eli Zaretskii <eliz <at> gnu.org>

Bug is archived. No further changes may be made.

Full log


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

From: Ergus <spacibba <at> aol.com>
To: bug-gnu-emacs <at> gnu.org
Subject: 31.0.50; Performance issue in dired+isearch with
 dired-isearch-filenames
Date: Wed, 21 May 2025 01:33:19 +0200

Hi:

I have been using dired and isearch in a directory with ~8000 files and
emacs became totally non-responsive. It freezed with every letter for
~10 seconds.

I checked my config and it seems that the problem is
`dired-isearch-filenames`. Any non-nil value produces this issue.

I ran with the profiler and it showed that all the time is going in
`next-single-property-change`


       86696  91% - command-execute
       86696  91%  - call-interactively
       86695  91%   - funcall-interactively
       59531  62%    - isearch-printing-char
       59531  62%     - isearch-process-search-char
       59531  62%      - isearch-process-search-string
       59531  62%       - isearch-search-and-update
       45907  48%        - isearch-update
       45890  48%         - isearch-lazy-highlight-new-loop
       45890  48%          - redisplay
       45854  48%           - timer-event-handler
       45854  48%            - apply
       45854  48%             - isearch-lazy-highlight-buffer-update
       45853  48%              - isearch-lazy-highlight-search
       45852  48%               - isearch-search-string
       45852  48%                - #<byte-code-function C84>
       45852  48%                 - apply
       45852  48%                  - search-within-boundaries
       45778  48%                   - #<byte-code-function C9F>
       45726  48%                    - mapcar
       45722  48%                     - #<byte-code-function C7B>
       45721  48%                        next-single-property-change
          35   0%                    + seq-min
           9   0%                      make-closure
           6   0%                      delq
          40   0%                   + #<byte-code-function 990>
           2   0%                   + #<byte-code-function F75>
           1   0%              + isearch-filter-visible
          36   0%             redisplay_internal (C function)
          14   0%         + pos-visible-in-window-group-p
           2   0%         + isearch-message
           1   0%         + window-max-chars-per-line
       13620  14%        + isearch-search
           4   0%        + isearch-message
       27143  28%    - isearch-del-char
       13624  14%     - isearch-update
       13624  14%      - isearch-lazy-highlight-new-loop
       13624  14%       - redisplay
       13622  14%        - timer-event-handler
       13622  14%         - apply
       13622  14%          - isearch-lazy-highlight-buffer-update
       13622  14%           - isearch-lazy-highlight-search
       13622  14%            - isearch-search-string
       13622  14%             - #<byte-code-function 511>
       13622  14%              - apply
       13622  14%               - search-within-boundaries
       13602  14%                - #<byte-code-function 500>
       13584  14%                 - mapcar
       13581  14%                  - #<byte-code-function 55A>
       13578  14%                     next-single-property-change
          10   0%                 + seq-min
           4   0%                   make-closure
           2   0%                   delq
          13   0%                + #<byte-code-function 990>
           2   0%          redisplay_internal (C function)
       13519  14%     - isearch-search
       13519  14%      - isearch-search-string
       13519  14%       - #<byte-code-function 415>
       13519  14%        - apply
       13519  14%         - search-within-boundaries
       13498  14%          - #<byte-code-function 42C>
       13486  14%           - mapcar
       13485  14%            - #<byte-code-function C2A>
       13482  14%               next-single-property-change
           5   0%             make-closure
           3   0%           + seq-min
           2   0%             delq
          12   0%          + #<byte-code-function 990>
          11   0%    + isearch-forward
           6   0%    + isearch-abort
           3   0%    + dired-next-line
           1   0%    + dired-previous-line
        7498   7% - timer-event-handler
        7498   7%  - apply
        6849   7%   - isearch-lazy-highlight-buffer-update
        6837   7%    - isearch-lazy-highlight-search
        6831   7%     - isearch-search-string
        6810   7%      - #<byte-code-function 492>
        6810   7%       - apply
        6810   7%        - search-within-boundaries
        6802   7%         - #<byte-code-function 49D>
        6793   7%          - mapcar
        6793   7%           - #<byte-code-function 7A7>
        6792   7%              next-single-property-change
           3   0%          + seq-min
           3   0%            delq
           1   0%            make-closure
           5   0%         + #<byte-code-function 990>
          15   0%      + #<byte-code-function 990>
           1   0%        char-table-p
           1   0%      + isearch-search-fun
           2   0%     + isearch-filter-visible
           9   0%    + isearch-filter-visible
           1   0%    + internal--before-save-selected-window
         638   0%   + isearch-lazy-highlight-start
           5   0%   + jit-lock-stealth-fontify
           3   0%   + show-paren-function
           3   0%   + jit-lock-context--update
         362   0% + redisplay_internal (C function)
          62   0%   Automatic GC
           8   0% + tooltip-hide
           2   0% + winner-save-old-configurations
           2   0% + undo-auto--add-boundary
           0   0%   ...





In GNU Emacs 31.0.50 (build 4, x86_64-pc-linux-gnu, GTK+ Version
 3.24.49, cairo version 1.18.4) of 2025-05-19 built on RTX
Repository revision: b499898a5e6e27ecacfb6a60b22a2289afc589dd
Repository branch: project
System Description: Arch Linux

Configured using:
 'configure --prefix=/home/ergo/.local/ --with-mailutils --with-pgtk
 --with-modules --with-cairo --with-harfbuzz
 --with-native-compilation=aot
 '--program-transform-name=s/^ctags$/ctags.emacs/''

Configured features:
ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ JPEG
LCMS2 LIBSYSTEMD LIBXML2 MODULES NATIVE_COMP NOTIFY INOTIFY PDUMPER PGTK
PNG RSVG SECCOMP SOUND SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS
TREE_SITTER WEBP XIM GTK3 ZLIB

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

Major mode: Elisp/l

Minor modes in effect:
  windmove-mode: t
  global-auto-revert-mode: t
  recentf-mode: t
  electric-pair-mode: t
  whitespace-mode: t
  flyspell-mode: t
  completion-preview-mode: t
  diff-hl-margin-local-mode: t
  diff-hl-margin-mode: t
  diff-hl-mode: t
  global-corfu-mode: t
  corfu-mode: t
  fancy-compilation-mode: t
  winner-mode: t
  project-multi-mode: t
  gtags-mode: t
  repeat-mode: t
  xterm-mouse-mode: t
  tty-tip-mode: t
  xclip-mode: t
  override-global-mode: t
  save-place-mode: t
  delete-selection-mode: t
  savehist-mode: t
  global-display-fill-column-indicator-mode: t
  display-fill-column-indicator-mode: t
  global-display-line-numbers-mode: t
  display-line-numbers-mode: t
  which-key-mode: t
  tooltip-mode: t
  eldoc-mode: t
  show-paren-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  file-name-shadow-mode: t
  context-menu-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  minibuffer-regexp-mode: t
  size-indication-mode: t
  column-number-mode: t
  line-number-mode: t
  indent-tabs-mode: t
  transient-mark-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t

Load-path shadows:
/mnt/casa/gits/emacs_clones/gtags-mode/gtags-mode hides /home/ergo/.config/emacs/elpa/gtags-mode-1.8.6/gtags-mode
/home/ergo/.config/emacs/elpa/transient-20250516.1031/transient hides /home/ergo/.local/share/emacs/31.0.50/lisp/transient

Features:
(shadow sort mail-extr emacsbug lisp-mnt windmove jka-compr find-func
cl-print dired-subtree dired-hacks-utils dired-aux dash help-fns
radix-tree mc-edit-lines mc-hide-unmatched-lines-mode mc-mark-more
sgml-mode facemenu dom mc-cycle-cursors multiple-cursors-core advice
comp comp-cstr warnings rect autorevert filenotify recentf tree-widget
ffap thingatpt misearch multi-isearch tramp-cache time-stamp tramp-sh
tramp trampver tramp-integration tramp-message tramp-compat shell
pcomplete parse-time iso8601 format-spec tramp-loaddefs vc-git elec-pair
whitespace flyspell-correct flyspell ispell completion-preview
diff-hl-margin diff-hl-dired diff-hl log-view log-edit message sendmail
yank-media puny dired-x dired dired-loaddefs rfc822 mml mml-sec epa
derived epg rfc6068 epg-config gnus-util time-date mm-decode mm-bodies
mm-encode mail-parse rfc2231 rfc2047 rfc2045 mm-util ietf-drums
mail-prsvr mailabbrev mail-utils gmm-utils mailheader add-log pcvs-util
vc-dir ewoc vc vc-dispatcher diff-mode track-changes corfu
fancy-compilation compile text-property-search comint ansi-osc
ansi-color comp-run comp-common winner cus-edit pp cus-start cus-load
wid-edit project-multi-mode gtags-mode files-x xref project ring
term/tmux term/xterm xterm init rx repeat cape compat use-package-ensure
package browse-url xdg 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 eieio eieio-core cl-macs icons
password-cache json subr-x map url-vars use-package-diminish xt-mouse
tty-tip xclip edmacro kmacro byte-opt use-package-bind-key bind-key
cl-extra help-mode simple-16-theme saveplace delsel savehist easy-mmode
display-fill-column-indicator display-line-numbers diminish which-key
cl-seq use-package-core cl-loaddefs cl-lib bytecomp byte-compile gv
disp-table info arduino-cli-mode-autoloads auctex-autoloads tex-site
avy-zap-autoloads avy-autoloads benchmark-init-autoloads
bufferlo-autoloads caml-autoloads cape-autoloads clang-format-autoloads
cobol-mode-autoloads compile-multi-autoloads compiler-explorer-autoloads
corfu-autoloads crdt-autoloads csv-mode-autoloads d-mode-autoloads
dape-autoloads deadgrep-autoloads debbugs-autoloads diff-hl-autoloads
diminish-autoloads dired-sidebar-autoloads dired-subtree-autoloads
dired-hacks-utils-autoloads dumb-jump-autoloads e2ansi-autoloads
eglot-booster-autoloads emamux-autoloads eshell-toggle-autoloads
esup-autoloads evil-collection-autoloads annalist-autoloads
evil-leader-autoloads evil-autoloads face-explorer-autoloads
fancy-compilation-autoloads flx-autoloads flymake-nasm-autoloads
flymake-quickdef-autoloads flyspell-correct-autoloads
git-commit-ts-mode-autoloads git-modes-autoloads
git-timemachine-autoloads gnuplot-autoloads goto-chg-autoloads
groovy-mode-autoloads gtags-mode-autoloads haskell-mode-autoloads
highlight-indent-guides-autoloads i3wm-config-mode-autoloads
ibuffer-sidebar-autoloads iedit-autoloads imenu-list-autoloads
julia-ts-mode-autoloads julia-mode-autoloads languagetool-autoloads
lice-autoloads lorem-ipsum-autoloads lua-mode-autoloads magit-autoloads
magit-section-autoloads llama-autoloads move-dup-autoloads
multiple-cursors-autoloads mutt-mode-autoloads nasm-mode-autoloads
neotree-autoloads nftables-mode-autoloads nginx-mode-autoloads
notmuch-autoloads objed-autoloads phi-search-autoloads
pkgbuild-mode-autoloads plz-autoloads popup-autoloads
protobuf-ts-mode-autoloads scopeline-autoloads shell-command+-autoloads
slime-autoloads macrostep-autoloads sphinx-mode-autoloads f-autoloads
s-autoloads dash-autoloads spinner-autoloads ssh-config-mode-autoloads
string-inflection-autoloads sudo-edit-autoloads systemd-autoloads
tmux-mode-autoloads transient-autoloads urgrep-autoloads vdiff-autoloads
hydra-autoloads lv-autoloads vterm-toggle-autoloads vterm-autoloads
vundo-autoloads with-editor-autoloads xclip-autoloads
yasnippet-snippets-autoloads yasnippet-autoloads early-init rmc
iso-transl tooltip cconv eldoc paren electric uniquify ediff-hook
vc-hooks lisp-float-type elisp-mode mwheel term/pgtk-win pgtk-win
term/common-win touch-screen pgtk-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 dbusbind inotify
dynamic-setting system-font-setting font-render-setting cairo gtk pgtk
lcms2 multi-tty move-toolbar make-network-process tty-child-frames
native-compile emacs)

Memory information:
((conses 16 348255 236056) (symbols 48 21674 0)
 (strings 32 85000 11286) (string-bytes 1 2720636) (vectors 16 38169)
 (vector-slots 8 1104566 168128) (floats 8 143 137)
 (intervals 56 14651 3188) (buffers 1064 19))




This bug report was last modified 21 days ago.

Previous Next


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