Subject: Re: bug#30539: 26.0; `char-displayable-p' is much slower in Emacs 25 and 26

From: [email-masked] (Charles A. Roelli)
Date: Wed, 28 Feb 2018 20:21:44 +0100

> Date: Tue, 20 Feb 2018 10:08:36 -0800 (PST)
> From: Drew Adams <[email-masked]>
> 
> Sorry, the recipe I sent before was not good.  The initial
> alist of chars had already been purged of any chars that
> are not `char-displayable-p'.
> 
> Please try attached file `throw-mule-bug-2.el' instead.
> This time the alist of chars in variable `char-names'
> includes some chars that are not `char-displayable-p'.
> Evaluating `char-displayable-p' for those chars is, I
> think, where the bottleneck is.
> 
> Evaluate the code in `throw-mule-bug-2.el' and then check
> buffers *CPU Profiler Report* and *Memory Profiler Report*.
> 
> I've attached those reports as these files:
> 
> throw-mule-bug-cpu-report2-E24-Q - Emacs 24.5 from `emacs -Q'
> throw-mule-bug-mem-report2-E24-Q - Emacs 24.5 from `emacs -Q'
> throw-mule-bug-cpu-report2-E26-Q - Emacs 26P2 from `emacs -Q'
> throw-mule-bug-mem-report2-E26-Q - Emacs 26P2 from `emacs -Q'
> 
> You can see these reports by using `M-x profiler-find-profile'
> and entering the report file name at the prompt.
> 
> In Emacs 24.5 evaluating `(my-test)' takes only a few _seconds_.
> In Emacs 26 (Pretest 2) it takes about 13 _minutes_.
> 
> Emacs 25.3.1 has the same problem as Emacs 26.

FWIW, on macOS 10.6, evaluating (my-test) the first time takes
~4.7 seconds, then further runs take about 0.01 seconds.  Setting
inhibit-compacting-font-caches to `t' seems to have no effect on
evaluation time in either case.

But I have noticed that displaying files containing certain Unicode
characters can lock Emacs for a little while.  I wonder if that is
also some manifestation of this bug.  Do you also see a slow down when
you visit a file containing the characters in the `char-names'
variable you defined?  Or is the slowness limited to running them
through `char-displayable-p'?