all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* bug#63364: (man "gcc") very slow
@ 2023-05-08  8:15 Tobias Bading
  2023-05-08 13:11 ` Eli Zaretskii
  0 siblings, 1 reply; 2+ messages in thread
From: Tobias Bading @ 2023-05-08  8:15 UTC (permalink / raw)
  To: 63364

With emacs-29 branch 7133784303 or master 31a66dc891:

1. emacs -Q

2. M-x man RET gcc RET

Emacs 29 and 30 both need almost 30 seconds to fully display this man page
on my machine (18714 lines, gcc-9, 2021-06-01). Emacs 26.3 needs about 2
seconds. (All tests done after “sudo cpupower frequency-set --max 3.5GHz”.)

According to “perf top -g”, rpl_re_search_2 and re_match_2_internal are
heavily involved.

---

In GNU Emacs 29.0.90 (build 3, x86_64-pc-linux-gnu, GTK+ Version
 3.24.20, cairo version 1.16.0) of 2023-05-08 built on omega
Repository revision: 71337843036d6a6b53aedcf898febd1b591b5f41
Repository branch: emacs-29
Windowing system distributor 'The X.Org Foundation', version 11.0.12013000
System Description: Ubuntu 20.04.6 LTS

Configured using:
 'configure --with-modules --with-imagemagick --without-tree-sitter'

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

Important settings:
  value of $LC_COLLATE: C.UTF-8
  value of $LC_MONETARY: de_DE.UTF-8
  value of $LC_NUMERIC: de_DE.UTF-8
  value of $LC_TIME: de_DE.UTF-8
  value of $LANG: C.UTF-8
  locale-coding-system: utf-8-unix

Major mode: Man

Minor modes in effect:
  tooltip-mode: t
  global-eldoc-mode: t
  show-paren-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  tool-bar-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  buffer-read-only: 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:
None found.

Features:
(shadow sort mail-extr emacsbug message mailcap yank-media puny dired
dired-loaddefs rfc822 mml mml-sec password-cache epa derived epg rfc6068
epg-config gnus-util text-property-search time-date subr-x mm-decode
mm-bodies mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader
sendmail rfc2047 rfc2045 ietf-drums mm-util mail-prsvr mail-utils tabify
cl-seq imenu man cl-loaddefs cl-lib ansi-color 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 dbusbind inotify lcms2
dynamic-setting system-font-setting font-render-setting cairo
move-toolbar gtk x-toolkit xinput2 x multi-tty make-network-process
emacs)

Memory information:
((conses 16 330857 10339)
 (symbols 48 5616 0)
 (strings 32 14327 1855)
 (string-bytes 1 410345)
 (vectors 16 10104)
 (vector-slots 8 165652 21107)
 (floats 8 33 49)
 (intervals 56 158501 0)
 (buffers 976 11))






^ permalink raw reply	[flat|nested] 2+ messages in thread

* bug#63364: (man "gcc") very slow
  2023-05-08  8:15 bug#63364: (man "gcc") very slow Tobias Bading
@ 2023-05-08 13:11 ` Eli Zaretskii
  0 siblings, 0 replies; 2+ messages in thread
From: Eli Zaretskii @ 2023-05-08 13:11 UTC (permalink / raw)
  To: Tobias Bading; +Cc: 63364

> Date: Mon, 8 May 2023 10:15:33 +0200
> From: Tobias Bading <tbading@web.de>
> 
> With emacs-29 branch 7133784303 or master 31a66dc891:
> 
> 1. emacs -Q
> 
> 2. M-x man RET gcc RET
> 
> Emacs 29 and 30 both need almost 30 seconds to fully display this man page
> on my machine (18714 lines, gcc-9, 2021-06-01). Emacs 26.3 needs about 2
> seconds. (All tests done after “sudo cpupower frequency-set --max 3.5GHz”.)
> 
> According to “perf top -g”, rpl_re_search_2 and re_match_2_internal are
> heavily involved.

I think this is the price of fixing bugs with fontification/cleanup of
the man pages, which we installed in Emacs 27; see bug#36927.  Since
the text of the man page is received from the background formatter in
chunks of arbitrary size, we cannot fontify/cleanup each chunk
separately, because that will miss some patterns we want to process.
So whenever a chunk is received, we always go to the beginning of the
section, and start fontifying from there.  And the GCC man page
basically has one huge OPTIONS section and very little else.  So each
time we receive one more chunk, we go back to the beginning of OPTIONS
and restart anew.

If someone has ideas for how to go back to a closer place without
missing some roff markup that got divided between chunks, patches are
welcome.  OTOH, we don't really want to encourage use of man pages...





^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2023-05-08 13:11 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-05-08  8:15 bug#63364: (man "gcc") very slow Tobias Bading
2023-05-08 13:11 ` Eli Zaretskii

Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.