unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#26402: 25.2; Font rendering extremely slow on any non-default font
@ 2017-04-08 13:48 Gennady Uraltsev
  2017-04-08 14:44 ` Eli Zaretskii
  0 siblings, 1 reply; 11+ messages in thread
From: Gennady Uraltsev @ 2017-04-08 13:48 UTC (permalink / raw)
  To: 26402


[-- Attachment #1.1.1: Type: text/plain, Size: 16364 bytes --]

Font rendering in emacs is incredibly slow if any buffer-local change is
made i.e. unless using 'default.

I tried moving the cursor in a small (30 line) text file in emacs under
X. It works perfectly, also changing the default font size with

set-face-font or set-frame-font

works perfectly well. On the other hand, any buffer local change of font
makes everything extremely slow. These modifications include
(buffer-face-set 'fixed-pitch)

or

text-scale-adjust

The cursor gets redrawn around once every second making using emacs
impossible.

I am attaching the profiler logs for moving the cursor from the
beginning to the end of the 30 line buffer


Default run:
> - command-execute                                                 122  96%
>  - call-interactively                                             122  96%
>   - byte-code                                                      88  69%
>    - read-extended-command                                         88  69%
>     - completing-read                                              88  69%
>      - completing-read-default                                     88  69%
>       - read-from-minibuffer                                       25  19%
>        - redisplay_internal (C function)                            3   2%
>         - funcall                                                   3   2%
>          - #<compiled 0x26fa55>                                     3   2%
>           - gui-backend-selection-exists-p                          3   2%
>            - apply                                                  3   2%
>               #<compiled 0x49fcad>                                  3   2%
>        - command-execute                                            2   1%
>         - call-interactively                                        2   1%
>          - funcall-interactively                                    2   1%
>           - previous-line-or-history-element                        2   1%
>            - previous-history-element                               2   1%
>               goto-history-element                                  2   1%
>   - funcall-interactively                                          34  26%
>    - execute-extended-command                                      33  26%
>     - sit-for                                                      25  19%
>      - redisplay                                                   20  15%
>       - redisplay_internal (C function)                             4   3%
>        - funcall                                                    4   3%
>         - #<compiled 0x26fa55>                                      4   3%
>          - gui-backend-selection-exists-p                           4   3%
>           - apply                                                   4   3%
>              #<compiled 0x49fcad>                                   4   3%
>     - command-execute                                               8   6%
>      - call-interactively                                           8   6%
>       - funcall-interactively                                       8   6%
>        - profiler-report                                            8   6%
>         - profiler-report-cpu                                       8   6%
>            profiler-cpu-profile                                     8   6%
>    - next-line                                                      1   0%
>     - line-move                                                     1   0%
>      - line-move-partial                                            1   0%
>       - window-screen-lines                                         1   0%
>        - window-inside-pixel-edges                                  1   0%
>           window-edges                                              1   0%
> - ...                                                               4   3%
>    Automatic GC                                                     4   3%

Run after set-frame-font:

> - command-execute                                                 100  90%
>  - call-interactively                                             100  90%
>   - byte-code                                                      58  52%
>    - read-extended-command                                         58  52%
>     - completing-read                                              58  52%
>      + completing-read-default                                     58  52%
>   - funcall-interactively                                          42  37%
>    - execute-extended-command                                      36  32%
>     - sit-for                                                      24  21%
>      - redisplay                                                   17  15%
>       - redisplay_internal (C function)                             2   1%
>        - funcall                                                    2   1%
>         - #<compiled 0x26fa55>                                      2   1%
>          - gui-backend-selection-exists-p                           2   1%
>           - apply                                                   2   1%
>              #<compiled 0x49fcad>                                   2   1%
>     - command-execute                                              12  10%
>      - call-interactively                                          12  10%
>       - funcall-interactively                                      12  10%
>        - profiler-report                                           12  10%
>         - profiler-report-cpu                                      12  10%
>            profiler-cpu-profile                                    12  10%
>    - next-line                                                      6   5%
>     - line-move                                                     6   5%
>        line-move-visual                                             6   5%
> - ...                                                              10   9%
>    Automatic GC                                                    10   9%
> - timer-event-handler                                               1   0%
>  - apply                                                            1   0%
>     jit-lock-context-fontify                                        1   0%

BAD run after text-scale-adjust

> - command-execute                                                2024  99%
>  - call-interactively                                            2024  99%
>   - funcall-interactively                                        1999  98%
>    - next-line                                                   1965  96%
>     - line-move                                                  1965  96%
>      - line-move-partial                                         1433  70%
>       - default-line-height                                       730  35%
>          default-font-height                                      730  35%
>       - window-screen-lines                                       695  34%
>        - default-line-height                                      691  33%
>           default-font-height                                     691  33%
>        - window-inside-pixel-edges                                  4   0%
>           window-edges                                              4   0%
>       - window-inside-pixel-edges                                   8   0%
>        - window-edges                                               8   0%
>         - window-current-scroll-bars                                4   0%
>            frame-current-scroll-bars                                4   0%
>      - default-line-height                                        524  25%
>         default-font-height                                       524  25%
>        line-move-visual                                             4   0%
>      - window-inside-pixel-edges                                    4   0%
>       - window-edges                                                4   0%
>        - window-current-scroll-bars                                 4   0%
>           frame-current-scroll-bars                                 4   0%
>    - execute-extended-command                                      34   1%
>     - sit-for                                                      22   1%
>        redisplay                                                   16   0%
>     - command-execute                                              12   0%
>      - call-interactively                                          12   0%
>       - funcall-interactively                                      12   0%
>        - profiler-report                                           12   0%
>         - profiler-report-cpu                                      12   0%
>            profiler-cpu-profile                                    12   0%
>   - byte-code                                                      25   1%
>    - read-extended-command                                         25   1%
>     - completing-read                                              25   1%
>      - completing-read-default                                     25   1%
>         read-from-minibuffer                                       19   0%
> - ...                                                              11   0%
>    Automatic GC                                                    11   0%

BAD run after (buffer-set-face fixed-pitch)

> command-execute                                                1778  99%
>  - call-interactively                                            1778  99%
>   - funcall-interactively                                        1745  97%
>    - next-line                                                   1716  96%
>     - line-move                                                  1716  96%
>      - line-move-partial                                         1176  65%
>       - default-line-height                                       608  34%
>          default-font-height                                      608  34%
>       - window-screen-lines                                       568  31%
>        - default-line-height                                      568  31%
>           default-font-height                                     568  31%
>      - default-line-height                                        540  30%
>         default-font-height                                       540  30%
>    - execute-extended-command                                      29   1%
>     - sit-for                                                      15   0%
>        redisplay                                                   12   0%
>     - command-execute                                              14   0%
>      - call-interactively                                          14   0%
>       - funcall-interactively                                      14   0%
>        - profiler-report                                           10   0%
>         - profiler-report-cpu                                      10   0%
>            profiler-cpu-profile                                    10   0%
>          profiler-start                                             4   0%
>   - byte-code                                                      33   1%
>    - read-extended-command                                         33   1%
>     - completing-read                                              33   1%
>      - completing-read-default                                     33   1%
>         read-from-minibuffer                                       17   0%
> - ...                                                               8   0%
>    Automatic GC                                                     8   0%





In GNU Emacs 25.2.1 (x86_64-suse-linux-gnu, GTK+ Version 3.20.10)
 of 2017-03-27 built on lamb61
Windowing system distributor 'The X.Org Foundation', version 11.0.11803000
System Description:	openSUSE Leap 42.2

Configured using:
 'configure --with-pop --without-hesiod --with-kerberos --with-kerberos5
 --with-xim --with-wide-int --with-file-notification=inotify
 --with-modules --enable-autodepend --prefix=/usr
 --mandir=/usr/share/man --infodir=/usr/share/info --datadir=/usr/share
 --localstatedir=/var --sharedstatedir=/var/lib --libexecdir=/usr/lib
 --enable-locallisppath=/usr/share/emacs/25.2/site-lisp:/usr/share/emacs/site-lisp
 --with-x --with-sound --with-xpm --with-jpeg --with-tiff --with-gif
 --with-png --with-rsvg --with-dbus --with-xft --without-gpm
 --with-x-toolkit=gtk3 --with-xwidgets --x-includes=/usr/include
 --x-libraries=/usr/lib64 --with-libotf --with-m17n-flt
 --build=x86_64-suse-linux 'CFLAGS=-fmessage-length=0
 -grecord-gcc-switches -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector
 -funwind-tables -fasynchronous-unwind-tables -g -D_GNU_SOURCE
 -DGDK_DISABLE_DEPRECATION_WARNINGS -DGLIB_DISABLE_DEPRECATION_WARNINGS
 -pipe -Wno-pointer-sign -Wno-unused-variable -Wno-unused-label
 -Wno-unprototyped-calls -fno-optimize-sibling-calls -fno-PIE
 -DSYSTEM_PURESIZE_EXTRA=55000 -DSITELOAD_PURESIZE_EXTRA=10000 '
 LDFLAGS=-Wl,-O2'

Configured features:
XPM JPEG TIFF GIF PNG RSVG IMAGEMAGICK SOUND DBUS GCONF GSETTINGS NOTIFY
ACL LIBSELINUX GNUTLS LIBXML2 FREETYPE M17N_FLT LIBOTF XFT ZLIB
TOOLKIT_SCROLL_BARS GTK3 X11 MODULES XWIDGETS

Important settings:
  value of $LC_CTYPE: en_US.UTF-8
  value of $LC_MONETARY: de_DE.UTF-8
  value of $LC_NUMERIC: POSIX
  value of $LC_TIME: en_GB.UTF-8
  value of $LANG: en_US.UTF-8
  value of $XMODIFIERS: @im=local
  locale-coding-system: utf-8-unix

Major mode: Fundamental

Minor modes in effect:
  buffer-face-mode: t
  tooltip-mode: t
  global-eldoc-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
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  line-number-mode: t
  transient-mark-mode: t

Recent messages:
Making completion list... [2 times]
delete-backward-char: Text is read-only
Making completion list... [3 times]
You can run the command ‘buffer-face-set’ with M-x bu-s RET
previous-line: Beginning of buffer [3 times]
CPU profiler stopped
CPU profiler started
next-line: End of buffer
Wrote /home/guraltsev/admin/bugs/emacs/font-slow/buffer-set-face-fixed-pitch
C-x <up> is undefined [2 times]

Load-path shadows:
None found.

Features:
(shadow sort mail-extr emacsbug message dired format-spec rfc822 mml
mml-sec password-cache epg epg-config gnus-util mm-decode mm-bodies
mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader sendmail
rfc2047 rfc2045 ietf-drums mm-util help-fns help-mode mail-prsvr
mail-utils thingatpt profiler easymenu cl-loaddefs pcase cl-lib
face-remap time-date mule-util delsel lpr tooltip eldoc electric
uniquify ediff-hook vc-hooks lisp-float-type mwheel x-win
term/common-win x-dnd tool-bar dnd fontset image regexp-opt fringe
tabulated-list newcomment elisp-mode lisp-mode prog-mode register page
menu-bar rfn-eshadow timer select scroll-bar mouse jit-lock font-lock
syntax facemenu font-core 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 charscript case-table epa-hook jka-cmpr-hook help
simple abbrev 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
dbusbind inotify dynamic-setting system-font-setting font-render-setting
xwidget-internal move-toolbar gtk x-toolkit x multi-tty
make-network-process emacs)

Memory information:
((conses 16 121417 15744)
 (symbols 48 22660 0)
 (miscs 40 5039 157)
 (strings 32 23137 10436)
 (string-bytes 1 677307)
 (vectors 16 67484)
 (vector-slots 8 1659575 10120)
 (floats 8 184 184)
 (intervals 56 446 10)
 (buffers 976 24)
 (heap 1024 58366 8411))

[-- Attachment #1.1.2: BAD-text-scale-adjust-profile --]
[-- Type: text/plain, Size: 2419 bytes --]


[profiler-profile "24.3" cpu #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8 data ([redisplay sit-for execute-extended-command funcall-interactively call-interactively command-execute nil nil nil nil nil nil nil nil nil nil] 16 [sit-for execute-extended-command funcall-interactively call-interactively command-execute nil nil nil nil nil nil nil nil nil nil nil] 6 [default-font-height default-line-height line-move-partial line-move next-line funcall-interactively call-interactively command-execute nil nil nil nil nil nil nil nil] 730 [default-font-height default-line-height window-screen-lines line-move-partial line-move next-line funcall-interactively call-interactively command-execute nil nil nil nil nil nil nil] 691 [default-font-height default-line-height line-move next-line funcall-interactively call-interactively command-execute nil nil nil nil nil nil nil nil nil] 524 [window-edges window-inside-pixel-edges window-screen-lines line-move-partial line-move next-line funcall-interactively call-interactively command-execute nil nil nil nil nil nil nil] 4 [line-move-visual line-move next-line funcall-interactively call-interactively command-execute nil nil nil nil nil nil nil nil nil nil] 4 [frame-current-scroll-bars window-current-scroll-bars window-edges window-inside-pixel-edges line-move next-line funcall-interactively call-interactively command-execute nil nil nil nil nil nil nil] 4 [frame-current-scroll-bars window-current-scroll-bars window-edges window-inside-pixel-edges line-move-partial line-move next-line funcall-interactively call-interactively command-execute nil nil nil nil nil nil] 4 [window-edges window-inside-pixel-edges line-move-partial line-move next-line funcall-interactively call-interactively command-execute nil nil nil nil nil nil nil nil] 4 [read-from-minibuffer completing-read-default completing-read read-extended-command byte-code call-interactively command-execute nil nil nil nil nil nil nil nil nil] 19 [completing-read-default completing-read read-extended-command byte-code call-interactively command-execute nil nil nil nil nil nil nil nil nil nil] 6 [profiler-cpu-profile profiler-report-cpu profiler-report funcall-interactively call-interactively command-execute execute-extended-command funcall-interactively call-interactively command-execute nil nil nil nil nil nil] 12 [Automatic\ GC] 11)) (22760 58176 318849 204000) nil]

[-- Attachment #1.1.3: BAD-buffer-set-face-fixed-pitch-profile --]
[-- Type: text/plain, Size: 1766 bytes --]


[profiler-profile "24.3" cpu #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8 data ([profiler-start funcall-interactively call-interactively command-execute execute-extended-command funcall-interactively call-interactively command-execute nil nil nil nil nil nil nil nil] 4 [redisplay sit-for execute-extended-command funcall-interactively call-interactively command-execute nil nil nil nil nil nil nil nil nil nil] 12 [sit-for execute-extended-command funcall-interactively call-interactively command-execute nil nil nil nil nil nil nil nil nil nil nil] 3 [default-font-height default-line-height line-move-partial line-move next-line funcall-interactively call-interactively command-execute nil nil nil nil nil nil nil nil] 608 [default-font-height default-line-height window-screen-lines line-move-partial line-move next-line funcall-interactively call-interactively command-execute nil nil nil nil nil nil nil] 568 [default-font-height default-line-height line-move next-line funcall-interactively call-interactively command-execute nil nil nil nil nil nil nil nil nil] 540 [nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil] 4 [read-from-minibuffer completing-read-default completing-read read-extended-command byte-code call-interactively command-execute nil nil nil nil nil nil nil nil nil] 17 [completing-read-default completing-read read-extended-command byte-code call-interactively command-execute nil nil nil nil nil nil nil nil nil nil] 16 [profiler-cpu-profile profiler-report-cpu profiler-report funcall-interactively call-interactively command-execute execute-extended-command funcall-interactively call-interactively command-execute nil nil nil nil nil nil] 10 [Automatic\ GC] 8)) (22760 58394 492030 54000) nil]

[-- Attachment #1.1.4: GOOD-default-profile --]
[-- Type: text/plain, Size: 2040 bytes --]


[profiler-profile "24.3" cpu #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8 data ([redisplay sit-for execute-extended-command funcall-interactively call-interactively command-execute nil nil nil nil nil nil nil nil nil nil] 16 ["#<compiled 0x49fcad>" apply gui-backend-selection-exists-p "#<compiled 0x26fa55>" funcall redisplay_internal\ \(C\ function\) redisplay sit-for execute-extended-command funcall-interactively call-interactively command-execute nil nil nil nil] 4 [sit-for execute-extended-command funcall-interactively call-interactively command-execute nil nil nil nil nil nil nil nil nil nil nil] 5 [nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil] 26 [window-edges window-inside-pixel-edges window-screen-lines line-move-partial line-move next-line funcall-interactively call-interactively command-execute nil nil nil nil nil nil nil] 1 [completing-read-default completing-read read-extended-command byte-code call-interactively command-execute nil nil nil nil nil nil nil nil nil nil] 63 [read-from-minibuffer completing-read-default completing-read read-extended-command byte-code call-interactively command-execute nil nil nil nil nil nil nil nil nil] 20 ["#<compiled 0x49fcad>" apply gui-backend-selection-exists-p "#<compiled 0x26fa55>" funcall redisplay_internal\ \(C\ function\) read-from-minibuffer completing-read-default completing-read read-extended-command byte-code call-interactively command-execute nil nil nil] 3 [goto-history-element previous-history-element previous-line-or-history-element funcall-interactively call-interactively command-execute read-from-minibuffer completing-read-default completing-read read-extended-command byte-code call-interactively command-execute nil nil nil] 2 [profiler-cpu-profile profiler-report-cpu profiler-report funcall-interactively call-interactively command-execute execute-extended-command funcall-interactively call-interactively command-execute nil nil nil nil nil nil] 8 [Automatic\ GC] 4)) (22760 58093 299567 465000) nil]

[-- Attachment #1.1.5: GOOD-set-frame-font-profile --]
[-- Type: text/plain, Size: 2292 bytes --]


[profiler-profile "24.3" cpu #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8 data (["#<compiled 0x49fcad>" apply gui-backend-selection-exists-p "#<compiled 0x26fa55>" funcall redisplay_internal\ \(C\ function\) redisplay sit-for execute-extended-command funcall-interactively call-interactively command-execute nil nil nil nil] 2 [redisplay sit-for execute-extended-command funcall-interactively call-interactively command-execute nil nil nil nil nil nil nil nil nil nil] 15 [sit-for execute-extended-command funcall-interactively call-interactively command-execute nil nil nil nil nil nil nil nil nil nil nil] 7 [nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil] 24 [jit-lock-context-fontify apply timer-event-handler nil nil nil nil nil nil nil nil nil nil nil nil nil] 1 [line-move-visual line-move next-line funcall-interactively call-interactively command-execute nil nil nil nil nil nil nil nil nil nil] 6 [completing-read-default completing-read read-extended-command byte-code call-interactively command-execute nil nil nil nil nil nil nil nil nil nil] 39 [image-search-load-path find-image eval "#<compiled 0x280363>" mapcar tool-bar-make-keymap-1 tool-bar-make-keymap redisplay_internal\ \(C\ function\) read-from-minibuffer completing-read-default completing-read read-extended-command byte-code call-interactively command-execute nil] 4 [read-from-minibuffer completing-read-default completing-read read-extended-command byte-code call-interactively command-execute nil nil nil nil nil nil nil nil nil] 11 [apply timer-event-handler read-from-minibuffer completing-read-default completing-read read-extended-command byte-code call-interactively command-execute nil nil nil nil nil nil nil] 3 [line-move-visual line-move previous-line previous-line-or-history-element funcall-interactively call-interactively command-execute read-from-minibuffer completing-read-default completing-read read-extended-command byte-code call-interactively command-execute nil nil] 1 [profiler-cpu-profile profiler-report-cpu profiler-report funcall-interactively call-interactively command-execute execute-extended-command funcall-interactively call-interactively command-execute nil nil nil nil nil nil] 12 [Automatic\ GC] 10)) (22760 58827 129064 974000) nil]

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

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

* bug#26402: 25.2; Font rendering extremely slow on any non-default font
  2017-04-08 13:48 bug#26402: 25.2; Font rendering extremely slow on any non-default font Gennady Uraltsev
@ 2017-04-08 14:44 ` Eli Zaretskii
  2017-04-08 14:54   ` Gennady Uraltsev
  0 siblings, 1 reply; 11+ messages in thread
From: Eli Zaretskii @ 2017-04-08 14:44 UTC (permalink / raw)
  To: Gennady Uraltsev; +Cc: 26402

> From: Gennady Uraltsev <gennady.uraltsev@gmail.com>
> Date: Sat, 8 Apr 2017 15:48:38 +0200
> 
> Font rendering in emacs is incredibly slow if any buffer-local change is
> made i.e. unless using 'default.

Does setting inhibit-compacting-font-caches non-nil solve the problem?
If it does, can you show an example of a buffer where you see this
problem?





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

* bug#26402: 25.2; Font rendering extremely slow on any non-default font
  2017-04-08 14:44 ` Eli Zaretskii
@ 2017-04-08 14:54   ` Gennady Uraltsev
  2017-04-08 16:10     ` Eli Zaretskii
  0 siblings, 1 reply; 11+ messages in thread
From: Gennady Uraltsev @ 2017-04-08 14:54 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 26402

[-- Attachment #1: Type: text/plain, Size: 714 bytes --]

Hey,

Nope, sorry. Doesn't seem to help.  What I did:
started emacs with

#emacs -Q lorem-ipsum

emacs opens in fundamental mode with the file (attached)

# M-x eval-expression
# (setq inhibit-compacting-font-caches t)
# buffer-face-set
# variable-pitch

Slow as before. Attaching the profiler logs


On 08/04/17 16:44, Eli Zaretskii wrote:
> > From: Gennady Uraltsev <gennady.uraltsev@gmail.com>
> > Date: Sat, 8 Apr 2017 15:48:38 +0200
> >
> > Font rendering in emacs is incredibly slow if any buffer-local change is
> > made i.e. unless using 'default.
>
> Does setting inhibit-compacting-font-caches non-nil solve the problem?
> If it does, can you show an example of a buffer where you see this
> problem?
>


[-- Attachment #2: BAD-inhibit-cache-buffer-set-face-profile --]
[-- Type: text/plain, Size: 2591 bytes --]


[profiler-profile "24.3" cpu #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8 data ([redisplay sit-for execute-extended-command funcall-interactively call-interactively command-execute nil nil nil nil nil nil nil nil nil nil] 8 [default-font-height default-line-height line-move-partial line-move next-line funcall-interactively call-interactively command-execute nil nil nil nil nil nil nil nil] 804 [default-font-height default-line-height window-screen-lines line-move-partial line-move next-line funcall-interactively call-interactively command-execute nil nil nil nil nil nil nil] 750 [default-font-height default-line-height line-move next-line funcall-interactively call-interactively command-execute nil nil nil nil nil nil nil nil nil] 670 [default-line-height line-move next-line funcall-interactively call-interactively command-execute nil nil nil nil nil nil nil nil nil nil] 4 [default-line-height window-screen-lines line-move-partial line-move next-line funcall-interactively call-interactively command-execute nil nil nil nil nil nil nil nil] 4 [line-move-visual line-move next-line funcall-interactively call-interactively command-execute nil nil nil nil nil nil nil nil nil nil] 4 [completing-read-default completing-read read-extended-command byte-code call-interactively command-execute nil nil nil nil nil nil nil nil nil nil] 29 [image-search-load-path find-image eval "#<compiled 0x280363>" mapcar tool-bar-make-keymap-1 tool-bar-make-keymap redisplay_internal\ \(C\ function\) read-from-minibuffer completing-read-default completing-read read-extended-command byte-code call-interactively command-execute nil] 4 [read-from-minibuffer completing-read-default completing-read read-extended-command byte-code call-interactively command-execute nil nil nil nil nil nil nil nil nil] 23 [complete-with-action "#<compiled 0x24c47d>" try-completion completion-basic-try-completion "#<compiled 0x4abe53>" completion--some completion--nth-completion completion-try-completion completion--do-completion completion--in-region-1 "#<compiled 0x249589>" apply "#<compiled 0x5cdc62b>" completion--in-region completion-in-region minibuffer-complete] 3 [execute-extended-command funcall-interactively call-interactively command-execute nil nil nil nil nil nil nil nil nil nil nil nil] 5 [profiler-cpu-profile profiler-report-cpu profiler-report funcall-interactively call-interactively command-execute execute-extended-command funcall-interactively call-interactively command-execute nil nil nil nil nil nil] 8 [Automatic\ GC] 5)) (22760 63749 353013 10000) nil]

[-- Attachment #3: BAD-inhibit-cache-buffer-set-face --]
[-- Type: text/plain, Size: 2925 bytes --]

- command-execute                                                2313  99%
 - call-interactively                                            2313  99%
  - funcall-interactively                                        2257  97%
   - next-line                                                   2236  96%
    - line-move                                                  2236  96%
     - line-move-partial                                         1558  67%
      - default-line-height                                       804  34%
         default-font-height                                      804  34%
      - window-screen-lines                                       754  32%
       - default-line-height                                      754  32%
          default-font-height                                     750  32%
     - default-line-height                                        674  29%
        default-font-height                                       670  28%
       line-move-visual                                             4   0%
   - execute-extended-command                                      21   0%
    - sit-for                                                       8   0%
       redisplay                                                    8   0%
    - command-execute                                               8   0%
     - call-interactively                                           8   0%
      - funcall-interactively                                       8   0%
       - profiler-report                                            8   0%
        - profiler-report-cpu                                       8   0%
           profiler-cpu-profile                                     8   0%
  - byte-code                                                      56   2%
   - read-extended-command                                         56   2%
    - completing-read                                              56   2%
     - completing-read-default                                     56   2%
      - read-from-minibuffer                                       27   1%
       - redisplay_internal (C function)                            4   0%
        - tool-bar-make-keymap                                      4   0%
         - tool-bar-make-keymap-1                                   4   0%
          - mapcar                                                  4   0%
           + #<compiled 0x280363>                                   4   0%
- ...                                                               8   0%
   Automatic GC                                                     5   0%
 - minibuffer-complete                                              3   0%
  - completion-in-region                                            3   0%
   - completion--in-region                                          3   0%
    + #<compiled 0x5cdc62b>                                         3   0%

[-- Attachment #4: lore-ipsum --]
[-- Type: text/plain, Size: 1151 bytes --]

Aliquam erat volutpat.  Nunc eleifend leo vitae magna.  In id erat non
orci commodo lobortis.  Proin neque massa, cursus ut, gravida ut,
lobortis eget, lacus.  Sed diam.  Praesent fermentum tempor tellus.
Nullam tempus.  Mauris ac felis vel velit tristique imperdiet.  Donec
at pede.  Etiam vel neque nec dui dignissim bibendum.  Vivamus id
enim.  Phasellus neque orci, porta a, aliquet quis, semper a, massa.
Phasellus purus.  Pellentesque tristique imperdiet tortor.  Nam
euismod tellus id erat.

Aliquam erat volutpat.  Nunc eleifend leo vitae magna.  In id erat non
orci commodo lobortis.  Proin neque massa, cursus ut, gravida ut,
lobortis eget, lacus.  Sed diam.  Praesent fermentum tempor tellus.
Nullam tempus.  Mauris ac felis vel velit tristique imperdiet.  Donec
at pede.  Etiam vel neque nec dui dignissim bibendum.  Vivamus id
enim.  Phasellus neque orci, porta a, aliquet quis, semper a, massa.
Phasellus purus.  Pellentesque tristique imperdiet tortor.  Nam
euismod tellus id erat.

Nulla posuere.  Nunc eleifend leo vitae magna.  Nunc aliquet, augue
nec adipiscing interdum, lacus tellus malesuada massa, quis varius mi
purus non odio.

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

* bug#26402: 25.2; Font rendering extremely slow on any non-default font
  2017-04-08 14:54   ` Gennady Uraltsev
@ 2017-04-08 16:10     ` Eli Zaretskii
       [not found]       ` <541302bf-540b-aedb-4ca4-2ba3acfe495e@gmail.com>
  0 siblings, 1 reply; 11+ messages in thread
From: Eli Zaretskii @ 2017-04-08 16:10 UTC (permalink / raw)
  To: Gennady Uraltsev; +Cc: 26402

> From: Gennady Uraltsev <gennady.uraltsev@gmail.com>
> Cc: 26402@debbugs.gnu.org
> Date: Sat, 8 Apr 2017 16:54:54 +0200
> 
> #emacs -Q lorem-ipsum
> 
> emacs opens in fundamental mode with the file (attached)
> 
> # M-x eval-expression
> # (setq inhibit-compacting-font-caches t)
> # buffer-face-set
> # variable-pitch
> 
> Slow as before. Attaching the profiler logs

What font do you get when you do the above?  You can use "C-u C-x ="
to see that.





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

* bug#26402: 25.2; Font rendering extremely slow on any non-default font
       [not found]       ` <541302bf-540b-aedb-4ca4-2ba3acfe495e@gmail.com>
@ 2017-04-08 17:18         ` Eli Zaretskii
  2017-04-08 22:33           ` Gennady Uraltsev
  0 siblings, 1 reply; 11+ messages in thread
From: Eli Zaretskii @ 2017-04-08 17:18 UTC (permalink / raw)
  To: Gennady Uraltsev; +Cc: 26402

[Please keep the bug address on the CC list.]

> From: Gennady Uraltsev <gennady.uraltsev@gmail.com>
> Date: Sat, 8 Apr 2017 18:32:34 +0200
> 
> The default font that emacs -Q starts with is
> 
> xft:-adobe-Source Code
> Pro-normal-normal-normal-*-15-*-*-*-m-0-iso10646-1 (#x2C)
> 
> (I guess it comes from the fact that that is my predefined qt and gtk
> monospace font)
> 
> once zooming in (text-scale-adjust INC) I get
> 
> xft:-adobe-Source Code
> Pro-normal-normal-normal-*-18-*-*-*-m-0-iso10646-1 (#x1E)
> 
> If instead of zooming in I do M-x buffer-face-set variable-pitch
> I get the font
> 
>   xft:-unknown-Roboto-normal-normal-normal-*-15-*-*-*-*-0-iso10646-1 (#x48)
> 
> 
> 
> I can also replicate this by setting the global font to be something
> else like
> 
> xft:-unknown-Droid Sans-normal-normal-normal-*-15-*-*-*-*-0-iso10646-1
> (#x54)
> xft:-monotype-Noto Sans-normal-normal-normal-*-15-*-*-*-*-0-iso10646-1
> (#x36)
> 
> at the level of the frame by using
> 
> M-x set-frame-font
> -unknown-Droid Sans-normal-normal-normal-*-*-*-*-*-*-0-iso10646-1
> or
> -monotype-Noto Sans-normal-normal-normal-*-*-*-*-*-*-0-iso10646-1
> 
> respectively. This does not have a negative impact on performance. But
> as soon as I enable  something like
> 
> M-x buffer-face-set fixed-pitch or
> (text-scale-adjust INC) the problem returns

Can you build your own Emacs?  If so, could you please apply the
following patch and see if it solves the problem?

diff --git a/src/font.c b/src/font.c
index a929509..bb6d18b 100644
--- a/src/font.c
+++ b/src/font.c
@@ -2777,21 +2777,22 @@ font_list_entities (struct frame *f, Lisp_Object spec)
 	  val = XCDR (val);
 	else
 	  {
-	    val = driver_list->driver->list (f, scratch_font_spec);
-	    if (!NILP (val))
-	      {
-		Lisp_Object copy = copy_font_spec (scratch_font_spec);
+	    Lisp_Object copy;
 
-		val = Fvconcat (1, &val);
-		ASET (copy, FONT_TYPE_INDEX, driver_list->driver->type);
-		XSETCDR (cache, Fcons (Fcons (copy, val), XCDR (cache)));
-	      }
+	    val = driver_list->driver->list (f, scratch_font_spec);
+	    if (NILP (val))
+	      val = zero_vector;
+	    else
+	      val = Fvconcat (1, &val);
+	    copy = copy_font_spec (scratch_font_spec);
+	    ASET (copy, FONT_TYPE_INDEX, driver_list->driver->type);
+	    XSETCDR (cache, Fcons (Fcons (copy, val), XCDR (cache)));
 	  }
-	if (VECTORP (val) && ASIZE (val) > 0
+	if (ASIZE (val) > 0
 	    && (need_filtering
 		|| ! NILP (Vface_ignored_fonts)))
 	  val = font_delete_unmatched (val, need_filtering ? spec : Qnil, size);
-	if (VECTORP (val) && ASIZE (val) > 0)
+	if (ASIZE (val) > 0)
 	  list = Fcons (val, list);
       }
 





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

* bug#26402: 25.2; Font rendering extremely slow on any non-default font
  2017-04-08 17:18         ` Eli Zaretskii
@ 2017-04-08 22:33           ` Gennady Uraltsev
  2017-04-09  5:44             ` Eli Zaretskii
  0 siblings, 1 reply; 11+ messages in thread
From: Gennady Uraltsev @ 2017-04-08 22:33 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 26402


[-- Attachment #1.1.1: Type: text/plain, Size: 8717 bytes --]

[Sorry about the CC, must have escaped me]

I recompiled from latest git of today so emacs decalres version 26.0.50
I tried recompiling without your patch and also with your patch. No
apparent improvement

I tried running both (text-scale-adjust INC) and buffer-set-face
both with and without (setq inhibit-compacting-font-caches t)

The profiler profiles are attached.
The profiler output for moving the cursor down from the beginning of the
file to the end are as follows:

*****************
M-x buffer-set-face variable-width
without (setq inhibit-compacting-font-caches t)
*****************
> - command-execute                                                2227  99%
>  - call-interactively                                            2227  99%
>   - funcall-interactively                                        2189  98%
>    - next-line                                                   2176  97%
>     - line-move                                                  2176  97%
>      - line-move-partial                                         1560  69%
>       - default-line-height                                       808  36%
>          default-font-height                                      808  36%
>       - window-screen-lines                                       752  33%
>        - default-line-height                                      752  33%
>           default-font-height                                     752  33%
>      - default-line-height                                        616  27%
>         default-font-height                                       612  27%
>       - display-graphic-p                                           4   0%
>          framep-on-display                                          4   0%
>    - execute-extended-command                                      13   0%
>     - sit-for                                                      13   0%
>        redisplay                                                    8   0%
>   - byte-code                                                      34   1%
>    - read-extended-command                                         34   1%
>     - completing-read                                              34   1%
>      - completing-read-default                                     34   1%
>       - read-from-minibuffer                                       17   0%
>        - window--sanitize-window-sizes                              5   0%
>         - walk-window-tree                                          5   0%
>          - walk-window-tree-1                                       5   0%
>           - #<compiled 0x4a56e9>                                    5   0%
>              window-min-size                                        5   0%
> - ...                                                               4   0%
>    Automatic GC                                                     4   0%


*****************
M-x buffer-set-face variable-width
with (setq inhibit-compacting-font-caches t)
*****************

> - command-execute                                                2509  99%
>  - call-interactively                                            2509  99%
>   - funcall-interactively                                        2459  97%
>    - next-line                                                   2415  96%
>     - line-move                                                  2415  96%
>      - line-move-partial                                         1763  70%
>       - default-line-height                                       887  35%
>          default-font-height                                      887  35%
>       - window-screen-lines                                       876  34%
>        - default-line-height                                      876  34%
>           default-font-height                                     876  34%
>      - default-line-height                                        652  25%
>         default-font-height                                       652  25%
>    - execute-extended-command                                      44   1%
>     - sit-for                                                      23   0%
>      - redisplay                                                   12   0%
>       - redisplay_internal (C function)                             4   0%
>          kill-this-buffer-enabled-p                                 4   0%
>     - command-execute                                              21   0%
>      - call-interactively                                          21   0%
>       - funcall-interactively                                      21   0%
>        - profiler-report                                           21   0%
>         - profiler-report-cpu                                      21   0%
>            profiler-cpu-profile                                    21   0%
>   - byte-code                                                      50   1%
>    - read-extended-command                                         50   1%
>     - completing-read                                              50   1%
>      - completing-read-default                                     50   1%
>       - read-from-minibuffer                                       21   0%
>        - command-execute                                            3   0%
>         - call-interactively                                        3   0%
>          - funcall-interactively                                    3   0%
>             delete-backward-char                                    3   0%
> - ...                                                               5   0%
>    Automatic GC                                                     5   0%





On 08/04/17 19:18, Eli Zaretskii wrote:
> [Please keep the bug address on the CC list.]
> 
>> From: Gennady Uraltsev <gennady.uraltsev@gmail.com>
>> Date: Sat, 8 Apr 2017 18:32:34 +0200
>>
>> The default font that emacs -Q starts with is
>>
>> xft:-adobe-Source Code
>> Pro-normal-normal-normal-*-15-*-*-*-m-0-iso10646-1 (#x2C)
>>
>> (I guess it comes from the fact that that is my predefined qt and gtk
>> monospace font)
>>
>> once zooming in (text-scale-adjust INC) I get
>>
>> xft:-adobe-Source Code
>> Pro-normal-normal-normal-*-18-*-*-*-m-0-iso10646-1 (#x1E)
>>
>> If instead of zooming in I do M-x buffer-face-set variable-pitch
>> I get the font
>>
>>   xft:-unknown-Roboto-normal-normal-normal-*-15-*-*-*-*-0-iso10646-1 (#x48)
>>
>>
>>
>> I can also replicate this by setting the global font to be something
>> else like
>>
>> xft:-unknown-Droid Sans-normal-normal-normal-*-15-*-*-*-*-0-iso10646-1
>> (#x54)
>> xft:-monotype-Noto Sans-normal-normal-normal-*-15-*-*-*-*-0-iso10646-1
>> (#x36)
>>
>> at the level of the frame by using
>>
>> M-x set-frame-font
>> -unknown-Droid Sans-normal-normal-normal-*-*-*-*-*-*-0-iso10646-1
>> or
>> -monotype-Noto Sans-normal-normal-normal-*-*-*-*-*-*-0-iso10646-1
>>
>> respectively. This does not have a negative impact on performance. But
>> as soon as I enable  something like
>>
>> M-x buffer-face-set fixed-pitch or
>> (text-scale-adjust INC) the problem returns
> 
> Can you build your own Emacs?  If so, could you please apply the
> following patch and see if it solves the problem?
> 
> diff --git a/src/font.c b/src/font.c
> index a929509..bb6d18b 100644
> --- a/src/font.c
> +++ b/src/font.c
> @@ -2777,21 +2777,22 @@ font_list_entities (struct frame *f, Lisp_Object spec)
>  	  val = XCDR (val);
>  	else
>  	  {
> -	    val = driver_list->driver->list (f, scratch_font_spec);
> -	    if (!NILP (val))
> -	      {
> -		Lisp_Object copy = copy_font_spec (scratch_font_spec);
> +	    Lisp_Object copy;
>  
> -		val = Fvconcat (1, &val);
> -		ASET (copy, FONT_TYPE_INDEX, driver_list->driver->type);
> -		XSETCDR (cache, Fcons (Fcons (copy, val), XCDR (cache)));
> -	      }
> +	    val = driver_list->driver->list (f, scratch_font_spec);
> +	    if (NILP (val))
> +	      val = zero_vector;
> +	    else
> +	      val = Fvconcat (1, &val);
> +	    copy = copy_font_spec (scratch_font_spec);
> +	    ASET (copy, FONT_TYPE_INDEX, driver_list->driver->type);
> +	    XSETCDR (cache, Fcons (Fcons (copy, val), XCDR (cache)));
>  	  }
> -	if (VECTORP (val) && ASIZE (val) > 0
> +	if (ASIZE (val) > 0
>  	    && (need_filtering
>  		|| ! NILP (Vface_ignored_fonts)))
>  	  val = font_delete_unmatched (val, need_filtering ? spec : Qnil, size);
> -	if (VECTORP (val) && ASIZE (val) > 0)
> +	if (ASIZE (val) > 0)
>  	  list = Fcons (val, list);
>        }
>  
> 

[-- Attachment #1.1.2: BAD-patched-buffer-set-face-profile --]
[-- Type: text/plain, Size: 1873 bytes --]


[profiler-profile "24.3" cpu #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 data ([redisplay sit-for execute-extended-command funcall-interactively call-interactively command-execute nil nil nil nil nil nil nil nil nil nil] 8 [sit-for execute-extended-command funcall-interactively call-interactively command-execute nil nil nil nil nil nil nil nil nil nil nil] 5 [default-font-height default-line-height line-move-partial line-move next-line funcall-interactively call-interactively command-execute nil nil nil nil nil nil nil nil] 808 [default-font-height default-line-height window-screen-lines line-move-partial line-move next-line funcall-interactively call-interactively command-execute nil nil nil nil nil nil nil] 752 [default-font-height default-line-height line-move next-line funcall-interactively call-interactively command-execute nil nil nil nil nil nil nil nil nil] 612 [call-interactively command-execute nil nil nil nil nil nil nil nil nil nil nil nil nil nil] 4 [framep-on-display display-graphic-p default-line-height line-move next-line funcall-interactively call-interactively command-execute nil nil nil nil nil nil nil nil] 4 [nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil] 5 [completing-read-default completing-read read-extended-command byte-code call-interactively command-execute nil nil nil nil nil nil nil nil nil nil] 17 [read-from-minibuffer completing-read-default completing-read read-extended-command byte-code call-interactively command-execute nil nil nil nil nil nil nil nil nil] 12 [window-min-size "#<compiled 0x4a56e9>" walk-window-tree-1 walk-window-tree window--sanitize-window-sizes read-from-minibuffer completing-read-default completing-read read-extended-command byte-code call-interactively command-execute nil nil nil nil] 5 [Automatic\ GC] 4)) (22761 25294 926762 984000) nil]

[-- Attachment #1.1.3: BAD-patched-inhibit-cache-buffer-set-face-profile --]
[-- Type: text/plain, Size: 2010 bytes --]


[profiler-profile "24.3" cpu #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 data ([kill-this-buffer-enabled-p redisplay_internal\ \(C\ function\) redisplay sit-for execute-extended-command funcall-interactively call-interactively command-execute nil nil nil nil nil nil nil nil] 4 [redisplay sit-for execute-extended-command funcall-interactively call-interactively command-execute nil nil nil nil nil nil nil nil nil nil] 8 [sit-for execute-extended-command funcall-interactively call-interactively command-execute nil nil nil nil nil nil nil nil nil nil nil] 11 [default-font-height default-line-height line-move-partial line-move next-line funcall-interactively call-interactively command-execute nil nil nil nil nil nil nil nil] 887 [default-font-height default-line-height window-screen-lines line-move-partial line-move next-line funcall-interactively call-interactively command-execute nil nil nil nil nil nil nil] 876 [default-font-height default-line-height line-move next-line funcall-interactively call-interactively command-execute nil nil nil nil nil nil nil nil nil] 652 [nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil] 7 [read-from-minibuffer completing-read-default completing-read read-extended-command byte-code call-interactively command-execute nil nil nil nil nil nil nil nil nil] 18 [completing-read-default completing-read read-extended-command byte-code call-interactively command-execute nil nil nil nil nil nil nil nil nil nil] 29 [delete-backward-char funcall-interactively call-interactively command-execute read-from-minibuffer completing-read-default completing-read read-extended-command byte-code call-interactively command-execute nil nil nil nil nil] 3 [profiler-cpu-profile profiler-report-cpu profiler-report funcall-interactively call-interactively command-execute execute-extended-command funcall-interactively call-interactively command-execute nil nil nil nil nil nil] 21 [Automatic\ GC] 5)) (22761 25503 836230 71000) nil]

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

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

* bug#26402: 25.2; Font rendering extremely slow on any non-default font
  2017-04-08 22:33           ` Gennady Uraltsev
@ 2017-04-09  5:44             ` Eli Zaretskii
  2017-04-09  9:45               ` Eli Zaretskii
  0 siblings, 1 reply; 11+ messages in thread
From: Eli Zaretskii @ 2017-04-09  5:44 UTC (permalink / raw)
  To: Gennady Uraltsev; +Cc: 26402

> Cc: 26402@debbugs.gnu.org
> From: Gennady Uraltsev <gennady.uraltsev@gmail.com>
> Date: Sun, 9 Apr 2017 00:33:23 +0200
> 
> I recompiled from latest git of today so emacs decalres version 26.0.50
> I tried recompiling without your patch and also with your patch. No
> apparent improvement
> 
> I tried running both (text-scale-adjust INC) and buffer-set-face
> both with and without (setq inhibit-compacting-font-caches t)

Then I think this is a problem we never saw before.  Unfortunately,
since I'm unable to reproduce this on my machine, I cannot debug it
further.  One last idea I have is to upgrade all the relevant
libraries to their latest versions.

> The profiler profiles are attached.

The profiles clearly tell the problem is related to font metrics, but
they don't tell what exactly causes the slow-down or why.  Sorry.





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

* bug#26402: 25.2; Font rendering extremely slow on any non-default font
  2017-04-09  5:44             ` Eli Zaretskii
@ 2017-04-09  9:45               ` Eli Zaretskii
  2017-04-09 11:07                 ` Gennady Uraltsev
  0 siblings, 1 reply; 11+ messages in thread
From: Eli Zaretskii @ 2017-04-09  9:45 UTC (permalink / raw)
  To: gennady.uraltsev; +Cc: 26402

> Date: Sun, 09 Apr 2017 08:44:55 +0300
> From: Eli Zaretskii <eliz@gnu.org>
> Cc: 26402@debbugs.gnu.org
> 
> > The profiler profiles are attached.
> 
> The profiles clearly tell the problem is related to font metrics, but
> they don't tell what exactly causes the slow-down or why.  Sorry.

How proficient are you with using GDB?  If I ask you to step through a
certain Emacs function and tell which of its parts is the slow one,
can you do that?  I can give more detailed instructions if needed.

TIA





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

* bug#26402: 25.2; Font rendering extremely slow on any non-default font
  2017-04-09  9:45               ` Eli Zaretskii
@ 2017-04-09 11:07                 ` Gennady Uraltsev
  2017-04-09 11:59                   ` Eli Zaretskii
  0 siblings, 1 reply; 11+ messages in thread
From: Gennady Uraltsev @ 2017-04-09 11:07 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 26402


[-- Attachment #1.1: Type: text/plain, Size: 1403 bytes --]

Dear Eli,

1) I must admit that I am not very familiar with GDB. I have done some
programming so I am familiar with the basic concepts but not the tool.
If you give me an outline of what to do I can try to do it (I do not
mean step by step instructions, I guess I can figure something out and
if I really can't I could ask for clarifications).

2) Currently this is what I am doing. I have some virtual machines of
otherdistributions (vanilla installations) that I use to test for bugs
(cross-check).

I see that on kubuntu 16.10 with emacs 24.5.1 and with emacs25.1.2 the
problem does not appear: everything works smoothly.


3) Just a question: is there a way to ask emacs to dump the info about
the versions of all the libraries it uses?


Let me know what to do.

Thanks!

Gena




On 09/04/17 11:45, Eli Zaretskii wrote:
> > Date: Sun, 09 Apr 2017 08:44:55 +0300
> > From: Eli Zaretskii <eliz@gnu.org>
> > Cc: 26402@debbugs.gnu.org
> >
> >> The profiler profiles are attached.
> >
> > The profiles clearly tell the problem is related to font metrics, but
> > they don't tell what exactly causes the slow-down or why.  Sorry.
>
> How proficient are you with using GDB?  If I ask you to step through a
> certain Emacs function and tell which of its parts is the slow one,
> can you do that?  I can give more detailed instructions if needed.
>
> TIA
>



[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

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

* bug#26402: 25.2; Font rendering extremely slow on any non-default font
  2017-04-09 11:07                 ` Gennady Uraltsev
@ 2017-04-09 11:59                   ` Eli Zaretskii
  2019-11-17  7:47                     ` Lars Ingebrigtsen
  0 siblings, 1 reply; 11+ messages in thread
From: Eli Zaretskii @ 2017-04-09 11:59 UTC (permalink / raw)
  To: Gennady Uraltsev; +Cc: 26402

> From: Gennady Uraltsev <gennady.uraltsev@gmail.com>
> Cc: 26402@debbugs.gnu.org
> Date: Sun, 9 Apr 2017 13:07:03 +0200
> 
> 1) I must admit that I am not very familiar with GDB. I have done some
> programming so I am familiar with the basic concepts but not the tool.
> If you give me an outline of what to do I can try to do it (I do not
> mean step by step instructions, I guess I can figure something out and
> if I really can't I could ask for clarifications).

Thanks.

The function we are interested in is font-info, or Ffont_info on the C
level.  Its code is in the file font.c around line 5100.  It calls
various other functions, like fs_query_fontset and font_open_by_name.
I'd like to know which one of them takes most of the time, then drill
down into that function and find out which of its subroutines takes
most of the time, etc.  One way of doing that is step through the code
and find the line whose execution takes a perceptible time.

Alternatively, you could use the 'perf' utility available on GNU/Linux
systems, to profile the code of Ffont_info and its subroutines and
find out which one takes most of the time.

> I see that on kubuntu 16.10 with emacs 24.5.1 and with emacs25.1.2 the
> problem does not appear: everything works smoothly.

Maybe the fonts available on those systems are different?

> 3) Just a question: is there a way to ask emacs to dump the info about
> the versions of all the libraries it uses?

Yes, the 'ldd' command is your friend.





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

* bug#26402: 25.2; Font rendering extremely slow on any non-default font
  2017-04-09 11:59                   ` Eli Zaretskii
@ 2019-11-17  7:47                     ` Lars Ingebrigtsen
  0 siblings, 0 replies; 11+ messages in thread
From: Lars Ingebrigtsen @ 2019-11-17  7:47 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 26402, Gennady Uraltsev

Eli Zaretskii <eliz@gnu.org> writes:

> The function we are interested in is font-info, or Ffont_info on the C
> level.  Its code is in the file font.c around line 5100.  It calls
> various other functions, like fs_query_fontset and font_open_by_name.
> I'd like to know which one of them takes most of the time, then drill
> down into that function and find out which of its subroutines takes
> most of the time, etc.  One way of doing that is step through the code
> and find the line whose execution takes a perceptible time.

This was two years ago, and there was no followup.  I'm not able to
reproduce the problem here, and the font machinery in Emacs has changed
substantially in Emacs 27, so I'm closing this bug report.

If this is still a problem, please reopen.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no





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

end of thread, other threads:[~2019-11-17  7:47 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-04-08 13:48 bug#26402: 25.2; Font rendering extremely slow on any non-default font Gennady Uraltsev
2017-04-08 14:44 ` Eli Zaretskii
2017-04-08 14:54   ` Gennady Uraltsev
2017-04-08 16:10     ` Eli Zaretskii
     [not found]       ` <541302bf-540b-aedb-4ca4-2ba3acfe495e@gmail.com>
2017-04-08 17:18         ` Eli Zaretskii
2017-04-08 22:33           ` Gennady Uraltsev
2017-04-09  5:44             ` Eli Zaretskii
2017-04-09  9:45               ` Eli Zaretskii
2017-04-09 11:07                 ` Gennady Uraltsev
2017-04-09 11:59                   ` Eli Zaretskii
2019-11-17  7:47                     ` Lars Ingebrigtsen

Code repositories for project(s) associated with this public inbox

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

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).