unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* The Emacs master is much slower than the emacs-27 branch.
@ 2020-12-03 18:15 Alan Mackenzie
  2020-12-03 20:17 ` Eli Zaretskii
                   ` (4 more replies)
  0 siblings, 5 replies; 74+ messages in thread
From: Alan Mackenzie @ 2020-12-03 18:15 UTC (permalink / raw)
  To: emacs-devel

Hello, Emacs.

I've got pretty much up to date copies of both the master and the
emacs-27 branches.

When I run my customary benchmark (see below) on master's src/xdisp.c in
master, it's taking around 34s.  On emacs-27, it's taking 22s.

That's a massive slowdown.  Does anybody know why this is happening?
Should I raise a bug report?

The benchmark I run is this:

(defmacro time-it (&rest forms)
  "Time the running of a sequence of forms using `float-time'.
Call like this: \"M-: (time-it (foo ...) (bar ...) ...)\"."
  `(let ((start (float-time)))
    ,@forms
    (- (float-time) start)))

(defun time-scroll (&optional arg)
  (interactive "P")
  (message "%s"
           (time-it
            (condition-case nil
                (while t
                  (if arg (scroll-down) (scroll-up))
                  (sit-for 0))
              (error nil)))))

On a freshly loaded buffer, do M-: (time-scroll).

-- 
Alan Mackenzie (Nuremberg, Germany).



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

* Re: The Emacs master is much slower than the emacs-27 branch.
  2020-12-03 18:15 The Emacs master is much slower than the emacs-27 branch Alan Mackenzie
@ 2020-12-03 20:17 ` Eli Zaretskii
  2020-12-04  9:13   ` Alan Mackenzie
  2020-12-03 20:59 ` Mattias Engdegård
                   ` (3 subsequent siblings)
  4 siblings, 1 reply; 74+ messages in thread
From: Eli Zaretskii @ 2020-12-03 20:17 UTC (permalink / raw)
  To: Alan Mackenzie; +Cc: emacs-devel

> Date: Thu, 3 Dec 2020 18:15:30 +0000
> From: Alan Mackenzie <acm@muc.de>
> 
> I've got pretty much up to date copies of both the master and the
> emacs-27 branches.
> 
> When I run my customary benchmark (see below) on master's src/xdisp.c in
> master, it's taking around 34s.  On emacs-27, it's taking 22s.

Optimized builds or unoptimized ones?

In unoptimized builds I get almost no difference: Emacs 28 is about 4%
slower than Emacs 27.  And the profiles look almost identical.



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

* Re: The Emacs master is much slower than the emacs-27 branch.
  2020-12-03 18:15 The Emacs master is much slower than the emacs-27 branch Alan Mackenzie
  2020-12-03 20:17 ` Eli Zaretskii
@ 2020-12-03 20:59 ` Mattias Engdegård
  2020-12-04  9:24   ` Alan Mackenzie
  2020-12-04 10:46   ` Alan Third
  2020-12-03 21:09 ` Ergus
                   ` (2 subsequent siblings)
  4 siblings, 2 replies; 74+ messages in thread
From: Mattias Engdegård @ 2020-12-03 20:59 UTC (permalink / raw)
  To: Alan Mackenzie; +Cc: emacs-devel

3 dec. 2020 kl. 19.15 skrev Alan Mackenzie <acm@muc.de>:

> I've got pretty much up to date copies of both the master and the
> emacs-27 branches.
> 
> When I run my customary benchmark (see below) on master's src/xdisp.c in
> master, it's taking around 34s.  On emacs-27, it's taking 22s.

Confirmed on macOS (Mojave).

> That's a massive slowdown.  Does anybody know why this is happening?
> Should I raise a bug report?

Please do!




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

* Re: The Emacs master is much slower than the emacs-27 branch.
  2020-12-03 18:15 The Emacs master is much slower than the emacs-27 branch Alan Mackenzie
  2020-12-03 20:17 ` Eli Zaretskii
  2020-12-03 20:59 ` Mattias Engdegård
@ 2020-12-03 21:09 ` Ergus
  2020-12-04  9:19   ` Alan Mackenzie
  2020-12-03 22:17 ` Stephen Berman
  2020-12-04  9:59 ` Gregory Heytings via Emacs development discussions.
  4 siblings, 1 reply; 74+ messages in thread
From: Ergus @ 2020-12-03 21:09 UTC (permalink / raw)
  To: Alan Mackenzie; +Cc: emacs-devel

On Thu, Dec 03, 2020 at 06:15:30PM +0000, Alan Mackenzie wrote:
>Hello, Emacs.
>
>I've got pretty much up to date copies of both the master and the
>emacs-27 branches.
>
>When I run my customary benchmark (see below) on master's src/xdisp.c in
>master, it's taking around 34s.  On emacs-27, it's taking 22s.
>
>That's a massive slowdown.  Does anybody know why this is happening?
>Should I raise a bug report?
>
>The benchmark I run is this:
>
>(defmacro time-it (&rest forms)
>  "Time the running of a sequence of forms using `float-time'.
>Call like this: \"M-: (time-it (foo ...) (bar ...) ...)\"."
>  `(let ((start (float-time)))
>    ,@forms
>    (- (float-time) start)))
>
>(defun time-scroll (&optional arg)
>  (interactive "P")
>  (message "%s"
>           (time-it
>            (condition-case nil
>                (while t
>                  (if arg (scroll-down) (scroll-up))
>                  (sit-for 0))
>              (error nil)))))
>
>On a freshly loaded buffer, do M-: (time-scroll).
>
>-- 
>Alan Mackenzie (Nuremberg, Germany).
>
Hi Alan:

I have observed the slowdown, but haven't have time to profile it
properly. Maybe adding to your time-scroll function (profile-start 'cpu)
just before and (profiler-stop) at the end to see the profile-report
could provide useful information.

The other thing I would check may be to compare the values of gcs-done
in both cases.

Best,
Ergus



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

* Re: The Emacs master is much slower than the emacs-27 branch.
  2020-12-03 18:15 The Emacs master is much slower than the emacs-27 branch Alan Mackenzie
                   ` (2 preceding siblings ...)
  2020-12-03 21:09 ` Ergus
@ 2020-12-03 22:17 ` Stephen Berman
  2020-12-04  9:04   ` Alan Mackenzie
  2020-12-04  9:59 ` Gregory Heytings via Emacs development discussions.
  4 siblings, 1 reply; 74+ messages in thread
From: Stephen Berman @ 2020-12-03 22:17 UTC (permalink / raw)
  To: Alan Mackenzie; +Cc: emacs-devel

On Thu, 3 Dec 2020 18:15:30 +0000 Alan Mackenzie <acm@muc.de> wrote:

> Hello, Emacs.
>
> I've got pretty much up to date copies of both the master and the
> emacs-27 branches.
>
> When I run my customary benchmark (see below) on master's src/xdisp.c in
> master, it's taking around 34s.  On emacs-27, it's taking 22s.

Hm, this is odd: I just ran your benchmark on src/xdisp.c (starting
Emacs with -Q, both configured with CFLAGS='-Og -g3') and got vastly
different timings than you did:

master:   21.785817861557007
emacs-27: 61.3885281085968

This is with:

GNU Emacs 28.0.50 (build 42, x86_64-pc-linux-gnu, GTK+ Version 3.24.17,
cairo version 1.17.3) of 2020-11-21
emacs-repository-version: "0a8cd0116204354e95fbb4ebde64c58123502aa2"

and

GNU Emacs 27.1.50 (build 18, x86_64-pc-linux-gnu, GTK+ Version 3.24.17)
of 2020-11-21
emacs-repository-version: "3ceee398192e312faa3ea073365c49bcce9ef61b"

Steve Berman



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

* Re: The Emacs master is much slower than the emacs-27 branch.
  2020-12-03 22:17 ` Stephen Berman
@ 2020-12-04  9:04   ` Alan Mackenzie
  2020-12-04  9:32     ` Stephen Berman
  2020-12-04 14:55     ` Arthur Miller
  0 siblings, 2 replies; 74+ messages in thread
From: Alan Mackenzie @ 2020-12-04  9:04 UTC (permalink / raw)
  To: Stephen Berman; +Cc: emacs-devel

Hello, Steve.

On Thu, Dec 03, 2020 at 23:17:18 +0100, Stephen Berman wrote:
> On Thu, 3 Dec 2020 18:15:30 +0000 Alan Mackenzie <acm@muc.de> wrote:

> > Hello, Emacs.

> > I've got pretty much up to date copies of both the master and the
> > emacs-27 branches.

> > When I run my customary benchmark (see below) on master's src/xdisp.c in
> > master, it's taking around 34s.  On emacs-27, it's taking 22s.

> Hm, this is odd: I just ran your benchmark on src/xdisp.c (starting
> Emacs with -Q, both configured with CFLAGS='-Og -g3') and got vastly
> different timings than you did:

> master:   21.785817861557007
> emacs-27: 61.3885281085968

Maybe the emacs-27 is built without optimisation for debugging.

> This is with:

> GNU Emacs 28.0.50 (build 42, x86_64-pc-linux-gnu, GTK+ Version 3.24.17,
> cairo version 1.17.3) of 2020-11-21
> emacs-repository-version: "0a8cd0116204354e95fbb4ebde64c58123502aa2"

> and

> GNU Emacs 27.1.50 (build 18, x86_64-pc-linux-gnu, GTK+ Version 3.24.17)
> of 2020-11-21
> emacs-repository-version: "3ceee398192e312faa3ea073365c49bcce9ef61b"

> Steve Berman

-- 
Alan Mackenzie (Nuremberg, Germany).



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

* Re: The Emacs master is much slower than the emacs-27 branch.
  2020-12-03 20:17 ` Eli Zaretskii
@ 2020-12-04  9:13   ` Alan Mackenzie
  0 siblings, 0 replies; 74+ messages in thread
From: Alan Mackenzie @ 2020-12-04  9:13 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: emacs-devel

Hello, Eli.

On Thu, Dec 03, 2020 at 22:17:33 +0200, Eli Zaretskii wrote:
> > Date: Thu, 3 Dec 2020 18:15:30 +0000
> > From: Alan Mackenzie <acm@muc.de>

> > I've got pretty much up to date copies of both the master and the
> > emacs-27 branches.

> > When I run my customary benchmark (see below) on master's src/xdisp.c in
> > master, it's taking around 34s.  On emacs-27, it's taking 22s.

I forgot to say, I was using the same build of the same CC Mode version
on both.

> Optimized builds or unoptimized ones?

Both optimised builds.

> In unoptimized builds I get almost no difference: Emacs 28 is about 4%
> slower than Emacs 27.  And the profiles look almost identical.

It's strange.  But soon after I posted my post, I couldn't see the slow
34s timing any more.  But other people have concurred with the problem
report.

There's something strange happening.

-- 
Alan Mackenzie (Nuremberg, Germany).



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

* Re: The Emacs master is much slower than the emacs-27 branch.
  2020-12-03 21:09 ` Ergus
@ 2020-12-04  9:19   ` Alan Mackenzie
  0 siblings, 0 replies; 74+ messages in thread
From: Alan Mackenzie @ 2020-12-04  9:19 UTC (permalink / raw)
  To: Ergus; +Cc: emacs-devel

Hello, Ergus.

On Thu, Dec 03, 2020 at 22:09:19 +0100, Ergus wrote:
> On Thu, Dec 03, 2020 at 06:15:30PM +0000, Alan Mackenzie wrote:
> >Hello, Emacs.

> >I've got pretty much up to date copies of both the master and the
> >emacs-27 branches.

> >When I run my customary benchmark (see below) on master's src/xdisp.c in
> >master, it's taking around 34s.  On emacs-27, it's taking 22s.

> >That's a massive slowdown.  Does anybody know why this is happening?
> >Should I raise a bug report?

> >The benchmark I run is this:

> >(defmacro time-it (&rest forms)
> >  "Time the running of a sequence of forms using `float-time'.
> >Call like this: \"M-: (time-it (foo ...) (bar ...) ...)\"."
> >  `(let ((start (float-time)))
> >    ,@forms
> >    (- (float-time) start)))

> >(defun time-scroll (&optional arg)
> >  (interactive "P")
> >  (message "%s"
> >           (time-it
> >            (condition-case nil
> >                (while t
> >                  (if arg (scroll-down) (scroll-up))
> >                  (sit-for 0))
> >              (error nil)))))

> >On a freshly loaded buffer, do M-: (time-scroll).

> >-- 
> >Alan Mackenzie (Nuremberg, Germany).

> Hi Alan:

> I have observed the slowdown, but haven't have time to profile it
> properly. Maybe adding to your time-scroll function (profile-start 'cpu)
> just before and (profiler-stop) at the end to see the profile-report
> could provide useful information.

Now that I've reported the problem, I don't see it any more.  I just see
the 22s timing all the time.  Otherwise I would raise the bug report.

> The other thing I would check may be to compare the values of gcs-done
> in both cases.

Thanks!  I didn't know about that variable.

> Best,
> Ergus

-- 
Alan Mackenzie (Nuremberg, Germany).



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

* Re: The Emacs master is much slower than the emacs-27 branch.
  2020-12-03 20:59 ` Mattias Engdegård
@ 2020-12-04  9:24   ` Alan Mackenzie
  2020-12-04 10:46   ` Alan Third
  1 sibling, 0 replies; 74+ messages in thread
From: Alan Mackenzie @ 2020-12-04  9:24 UTC (permalink / raw)
  To: Mattias Engdegård; +Cc: emacs-devel

Hello, Mattias.

On Thu, Dec 03, 2020 at 21:59:39 +0100, Mattias Engdegård wrote:
> 3 dec. 2020 kl. 19.15 skrev Alan Mackenzie <acm@muc.de>:

> > I've got pretty much up to date copies of both the master and the
> > emacs-27 branches.

> > When I run my customary benchmark (see below) on master's src/xdisp.c in
> > master, it's taking around 34s.  On emacs-27, it's taking 22s.

> Confirmed on macOS (Mojave).

> > That's a massive slowdown.  Does anybody know why this is happening?
> > Should I raise a bug report?

> Please do!

Except I'm not seeing the slow timing any more, no matter what I try it
on.  I saw it all the time before I reported it.  So I don't feel right
in raising a bug report.

But you've seen the problem, so have one or two other people.  Something
wierd appears to be happening.

-- 
Alan Mackenzie (Nuremberg, Germany).



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

* Re: The Emacs master is much slower than the emacs-27 branch.
  2020-12-04  9:04   ` Alan Mackenzie
@ 2020-12-04  9:32     ` Stephen Berman
  2020-12-04  9:53       ` Alan Mackenzie
  2020-12-04 11:45       ` Eli Zaretskii
  2020-12-04 14:55     ` Arthur Miller
  1 sibling, 2 replies; 74+ messages in thread
From: Stephen Berman @ 2020-12-04  9:32 UTC (permalink / raw)
  To: Alan Mackenzie; +Cc: emacs-devel

On Fri, 4 Dec 2020 09:04:49 +0000 Alan Mackenzie <acm@muc.de> wrote:

> Hello, Steve.
>
> On Thu, Dec 03, 2020 at 23:17:18 +0100, Stephen Berman wrote:
>> On Thu, 3 Dec 2020 18:15:30 +0000 Alan Mackenzie <acm@muc.de> wrote:
>
>> > Hello, Emacs.
>
>> > I've got pretty much up to date copies of both the master and the
>> > emacs-27 branches.
>
>> > When I run my customary benchmark (see below) on master's src/xdisp.c in
>> > master, it's taking around 34s.  On emacs-27, it's taking 22s.
>
>> Hm, this is odd: I just ran your benchmark on src/xdisp.c (starting
>> Emacs with -Q, both configured with CFLAGS='-Og -g3') and got vastly
>> different timings than you did:
>
>> master:   21.785817861557007
>> emacs-27: 61.3885281085968
>
> Maybe the emacs-27 is built without optimisation for debugging.

As noted above, I build both master and emacs-27 with CFLAGS='-Og -g3'.
Given that, is such a difference still expected?  Eli wrote:
"In unoptimized builds I get almost no difference: Emacs 28 is about 4%
slower than Emacs 27", which also contrasts sharply with my timings.

Steve Berman



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

* Re: The Emacs master is much slower than the emacs-27 branch.
  2020-12-04  9:32     ` Stephen Berman
@ 2020-12-04  9:53       ` Alan Mackenzie
  2020-12-04 10:14         ` Stephen Berman
  2020-12-04 11:45       ` Eli Zaretskii
  1 sibling, 1 reply; 74+ messages in thread
From: Alan Mackenzie @ 2020-12-04  9:53 UTC (permalink / raw)
  To: Stephen Berman; +Cc: emacs-devel

Hello, Steve.

On Fri, Dec 04, 2020 at 10:32:16 +0100, Stephen Berman wrote:
> On Fri, 4 Dec 2020 09:04:49 +0000 Alan Mackenzie <acm@muc.de> wrote:
> > On Thu, Dec 03, 2020 at 23:17:18 +0100, Stephen Berman wrote:
> >> On Thu, 3 Dec 2020 18:15:30 +0000 Alan Mackenzie <acm@muc.de> wrote:

> >> > Hello, Emacs.

> >> > I've got pretty much up to date copies of both the master and the
> >> > emacs-27 branches.

> >> > When I run my customary benchmark (see below) on master's src/xdisp.c in
> >> > master, it's taking around 34s.  On emacs-27, it's taking 22s.

> >> Hm, this is odd: I just ran your benchmark on src/xdisp.c (starting
> >> Emacs with -Q, both configured with CFLAGS='-Og -g3') and got vastly
> >> different timings than you did:

> >> master:   21.785817861557007
> >> emacs-27: 61.3885281085968

> > Maybe the emacs-27 is built without optimisation for debugging.

> As noted above, I build both master and emacs-27 with CFLAGS='-Og -g3'.

Apologies.  I hadn't read your post properly.

> Given that, is such a difference still expected?  Eli wrote:
> "In unoptimized builds I get almost no difference: Emacs 28 is about 4%
> slower than Emacs 27", which also contrasts sharply with my timings.

I can't understand why you're getting such a slowdown in your emacs-27.
You've presumably got a modern machine, with plenty of cores and plenty
of RAM, so it shouldn't be swapping, or some other process taking up the
processor.

There's something very strange happening.

> Steve Berman

-- 
Alan Mackenzie (Nuremberg, Germany).



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

* Re: The Emacs master is much slower than the emacs-27 branch.
  2020-12-03 18:15 The Emacs master is much slower than the emacs-27 branch Alan Mackenzie
                   ` (3 preceding siblings ...)
  2020-12-03 22:17 ` Stephen Berman
@ 2020-12-04  9:59 ` Gregory Heytings via Emacs development discussions.
  2020-12-09  4:23   ` andres.ramirez
  4 siblings, 1 reply; 74+ messages in thread
From: Gregory Heytings via Emacs development discussions. @ 2020-12-04  9:59 UTC (permalink / raw)
  To: Alan Mackenzie; +Cc: emacs-devel


[Apparently this email, which I sent a few hours ago, did not reach the 
mailing list.  I apologize if you receive it twice.]

>
> I've got pretty much up to date copies of both the master and the 
> emacs-27 branches.
>
> When I run my customary benchmark (see below) on master's src/xdisp.c in 
> master, it's taking around 34s.  On emacs-27, it's taking 22s.
>
> That's a massive slowdown.  Does anybody know why this is happening? 
> Should I raise a bug report?
>
> The benchmark I run is this:
>
> (defmacro time-it (&rest forms)
>  "Time the running of a sequence of forms using `float-time'.
> Call like this: \"M-: (time-it (foo ...) (bar ...) ...)\"."
>  `(let ((start (float-time)))
>    ,@forms
>    (- (float-time) start)))
>
> (defun time-scroll (&optional arg)
>  (interactive "P")
>  (message "%s"
>           (time-it
>            (condition-case nil
>                (while t
>                  (if arg (scroll-down) (scroll-up))
>                  (sit-for 0))
>              (error nil)))))
>
> On a freshly loaded buffer, do M-: (time-scroll).
>

Did you use emacs -Q?  What is your platform?

Out of curiosity, I tried your benchmark on my computer (Debian GNU/Linux) 
for the following Emacs versions.  I ran the benchmark four times for each 
version, and the results were stable for each version:

Emacs 23.4.1: 5.2s (that's not a typo: five seconds)
Emacs 24.5.1: 28.2s
Emacs 25.2.2: 27.6s
Emacs 26.3: 16.9s
Emacs 27.1: 18.5s
Emacs 28.0.50: 19.5s

I see a slowdown between 27 and 28, but not a massive one.

FWIW, here are the results of that benchmark after disabling 
global-font-lock-mode:

Emacs 23.4.1: 1.1s
Emacs 24.5.1: 1.8s
Emacs 25.2.2: 1.8s
Emacs 26.3: 3.0s
Emacs 27.1: 3.3s
Emacs 28.0.50: 3.3s



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

* Re: The Emacs master is much slower than the emacs-27 branch.
  2020-12-04  9:53       ` Alan Mackenzie
@ 2020-12-04 10:14         ` Stephen Berman
  0 siblings, 0 replies; 74+ messages in thread
From: Stephen Berman @ 2020-12-04 10:14 UTC (permalink / raw)
  To: Alan Mackenzie; +Cc: emacs-devel

On Fri, 4 Dec 2020 09:53:40 +0000 Alan Mackenzie <acm@muc.de> wrote:

> Hello, Steve.
>
> On Fri, Dec 04, 2020 at 10:32:16 +0100, Stephen Berman wrote:
>> On Fri, 4 Dec 2020 09:04:49 +0000 Alan Mackenzie <acm@muc.de> wrote:
>> > On Thu, Dec 03, 2020 at 23:17:18 +0100, Stephen Berman wrote:
>> >> On Thu, 3 Dec 2020 18:15:30 +0000 Alan Mackenzie <acm@muc.de> wrote:
>
>> >> > Hello, Emacs.
>
>> >> > I've got pretty much up to date copies of both the master and the
>> >> > emacs-27 branches.
>
>> >> > When I run my customary benchmark (see below) on master's src/xdisp.c in
>> >> > master, it's taking around 34s.  On emacs-27, it's taking 22s.
>
>> >> Hm, this is odd: I just ran your benchmark on src/xdisp.c (starting
>> >> Emacs with -Q, both configured with CFLAGS='-Og -g3') and got vastly
>> >> different timings than you did:
>
>> >> master:   21.785817861557007
>> >> emacs-27: 61.3885281085968
>
>> > Maybe the emacs-27 is built without optimisation for debugging.
>
>> As noted above, I build both master and emacs-27 with CFLAGS='-Og -g3'.
>
> Apologies.  I hadn't read your post properly.
>
>> Given that, is such a difference still expected?  Eli wrote:
>> "In unoptimized builds I get almost no difference: Emacs 28 is about 4%
>> slower than Emacs 27", which also contrasts sharply with my timings.
>
> I can't understand why you're getting such a slowdown in your emacs-27.
> You've presumably got a modern machine, with plenty of cores and plenty
> of RAM, so it shouldn't be swapping, or some other process taking up the
> processor.

The CPU is an i7-8700 with 6 cores (12 threads) and 16 GB RAM.  I ran
the benchmarks twice in sequence, first using xdisp.c from master and
then using xdisp.c from emacs-27, with nearly identical results (with
the latter the timings were insignificantly faster, but the differences
between the runs from master and those from emacs-27 were the same).

> There's something very strange happening.

Indeed.

Steve Berman



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

* Re: The Emacs master is much slower than the emacs-27 branch.
  2020-12-03 20:59 ` Mattias Engdegård
  2020-12-04  9:24   ` Alan Mackenzie
@ 2020-12-04 10:46   ` Alan Third
  2020-12-04 11:07     ` Mattias Engdegård
  1 sibling, 1 reply; 74+ messages in thread
From: Alan Third @ 2020-12-04 10:46 UTC (permalink / raw)
  To: Mattias Engdegård; +Cc: Alan Mackenzie, emacs-devel

On Thu, Dec 03, 2020 at 09:59:39PM +0100, Mattias Engdegård wrote:
> 3 dec. 2020 kl. 19.15 skrev Alan Mackenzie <acm@muc.de>:
> 
> > I've got pretty much up to date copies of both the master and the
> > emacs-27 branches.
> > 
> > When I run my customary benchmark (see below) on master's src/xdisp.c in
> > master, it's taking around 34s.  On emacs-27, it's taking 22s.
> 
> Confirmed on macOS (Mojave).

Watch out with the NS port: drawing to the screen is slower in Emacs
28 than Emacs 27, but is less likely to produce graphical glitches.

Obviously that doesn't explain what Alan's seeing since he's not using NS.
-- 
Alan Third



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

* Re: The Emacs master is much slower than the emacs-27 branch.
  2020-12-04 10:46   ` Alan Third
@ 2020-12-04 11:07     ` Mattias Engdegård
  0 siblings, 0 replies; 74+ messages in thread
From: Mattias Engdegård @ 2020-12-04 11:07 UTC (permalink / raw)
  To: Alan Third; +Cc: Alan Mackenzie, emacs-devel

4 dec. 2020 kl. 11.46 skrev Alan Third <alan@idiocy.org>:

>> Confirmed on macOS (Mojave).
> 
> Watch out with the NS port: drawing to the screen is slower in Emacs
> 28 than Emacs 27, but is less likely to produce graphical glitches.

Thank you, I'd forgotten about that. This fits the rough date of the regression as well.
Right, there is nothing to see here then.




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

* Re: The Emacs master is much slower than the emacs-27 branch.
  2020-12-04  9:32     ` Stephen Berman
  2020-12-04  9:53       ` Alan Mackenzie
@ 2020-12-04 11:45       ` Eli Zaretskii
  2020-12-04 12:54         ` Stephen Berman
  1 sibling, 1 reply; 74+ messages in thread
From: Eli Zaretskii @ 2020-12-04 11:45 UTC (permalink / raw)
  To: Stephen Berman; +Cc: acm, emacs-devel

> From: Stephen Berman <stephen.berman@gmx.net>
> Date: Fri, 04 Dec 2020 10:32:16 +0100
> Cc: emacs-devel@gnu.org
> 
> As noted above, I build both master and emacs-27 with CFLAGS='-Og -g3'.
> Given that, is such a difference still expected?

No.  But if you see this consistently, please produce and post the
profile of each of the versions, and let's take it from there.



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

* Re: The Emacs master is much slower than the emacs-27 branch.
  2020-12-04 11:45       ` Eli Zaretskii
@ 2020-12-04 12:54         ` Stephen Berman
  2020-12-04 13:28           ` Eli Zaretskii
  0 siblings, 1 reply; 74+ messages in thread
From: Stephen Berman @ 2020-12-04 12:54 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: acm, emacs-devel

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

On Fri, 04 Dec 2020 13:45:02 +0200 Eli Zaretskii <eliz@gnu.org> wrote:

>> From: Stephen Berman <stephen.berman@gmx.net>
>> Date: Fri, 04 Dec 2020 10:32:16 +0100
>> Cc: emacs-devel@gnu.org
>>
>> As noted above, I build both master and emacs-27 with CFLAGS='-Og -g3'.
>> Given that, is such a difference still expected?
>
> No.  But if you see this consistently, please produce and post the
> profile of each of the versions, and let's take it from there.

Since the builds I ran the benchmark on were about two weeks old, I
updated both branches now, rebuilt and ran the benchmark again, and got
the same results: ~21 seconds on master, ~61 seconds on emacs-27.
Profiles attached.

Steve Berman


[-- Attachment #2: profile-27 --]
[-- Type: application/octet-stream, Size: 79376 bytes --]

- command-execute                                               47766  77%
 - call-interactively                                           47766  77%
  - funcall-interactively                                       47621  76%
   - eval-expression                                            47595  76%
    - eval                                                      47595  76%
     - time-scroll                                              47595  76%
      - message                                                 47595  76%
       - let                                                    47595  76%
        - condition-case                                        47595  76%
         - while                                                47593  76%
          - sit-for                                             45234  73%
           - redisplay                                          45153  72%
            - redisplay_internal (C function)                   41931  67%
             - jit-lock-function                                41352  66%
              - jit-lock-fontify-now                            41319  66%
               - jit-lock--run-functions                        41247  66%
                - run-hook-wrapped                              41239  66%
                 - #<compiled 0x7350f9>                         41235  66%
                  - font-lock-fontify-region                    41088  66%
                   - c-font-lock-fontify-region                 41043  66%
                    - font-lock-default-fontify-region              38611  62%
                     - font-lock-fontify-keywords-region              37480  60%
                      - c-font-lock-declarations                21122  34%
                       - c-find-decl-spots                      20850  33%
                        - #<compiled 0x443f0d>                  12966  20%
                         - c-forward-decl-or-cast-1               5003   8%
                          - c-forward-type                       3020   4%
                           - c-check-qualified-type                772   1%
                            - c-forward-over-compound-identifier                715   1%
                             - c-forward-over-token                337   0%
                                c-forward-sws                     155   0%
                               c-on-identifier                    162   0%
                               c-forward-sws                      133   0%
                           - c-forward-name                       731   1%
                              c-forward-sws                       225   0%
                           - c-add-type                            53   0%
                            - c-syntactic-content                  41   0%
                               c-forward-sws                       12   0%
                               apply                                4   0%
                           - c-forward-keyword-clause                 35   0%
                              c-forward-sws                        21   0%
                             c-forward-sws                         24   0%
                             #<compiled 0x66968d>                   6   0%
                             #<compiled 0x669699>                   4   0%
                             #<compiled 0x669675>                   2   0%
                             #<compiled 0x669681>                   1   0%
                          - c-backward-token-2                    335   0%
                             c-backward-sws                       109   0%
                             c-beginning-of-current-token                104   0%
                          - c-forward-sws                         135   0%
                           - c-beginning-of-macro                   3   0%
                              c-backward-single-comment                  3   0%
                          - c-forward-name                         92   0%
                             c-forward-sws                         40   0%
                          - c-directly-in-class-called-p                 82   0%
                           - c-parse-state                         63   0%
                            - c-parse-state-1                      57   0%
                             - c-remove-stale-state-cache                 24   0%
                              - c-beginning-of-macro                  8   0%
                                 #<compiled 0x40f781>                  1   0%
                                 back-to-indentation                  1   0%
                             - c-append-to-state-cache                 22   0%
                              - c-beginning-of-macro                  8   0%
                                 back-to-indentation                  6   0%
                             - c-parse-state-get-strategy                  6   0%
                              - c-beginning-of-macro                  6   0%
                                 back-to-indentation                  3   0%
                            - c-beginning-of-macro                  5   0%
                               back-to-indentation                  3   0%
                           - c-looking-at-decl-block                 17   0%
                            - c-syntactic-skip-backward                 13   0%
                             - c-backward-sws                       7   0%
                              - c-beginning-of-macro                  2   0%
                                 back-to-indentation                  2   0%
                             - c-beginning-of-macro                  2   0%
                                back-to-indentation                  1   0%
                             - c-literal-start                      1   0%
                                c-semi-pp-to-literal                  1   0%
                            - c-backward-sws                        2   0%
                             - c-beginning-of-macro                  2   0%
                                c-backward-single-comment                  2   0%
                              c-syntactic-re-search-forward                  1   0%
                            c-forward-annotation                   72   0%
                          - c-backward-sws                         11   0%
                             c-beginning-of-current-token                  6   0%
                          - c-forward-keyword-clause                 10   0%
                             c-forward-sws                          9   0%
                            #<compiled 0x6781ed>                    1   0%
                         - c-get-fontification-context               4147   6%
                          - c-inside-bracelist-p                 1276   2%
                           - c-looking-at-or-maybe-in-bracelist                639   1%
                            - c-backward-token-2                  334   0%
                             - c-backward-sws                     173   0%
                              - c-beginning-of-macro                 54   0%
                                 back-to-indentation                 14   0%
                                 c-backward-single-comment                  7   0%
                                 #<compiled 0x43648d>                  3   0%
                                 #<compiled 0x40f781>                  1   0%
                                c-beginning-of-current-token                 11   0%
                               c-beginning-of-current-token                 11   0%
                            - c-backward-sws                      211   0%
                             - c-beginning-of-macro                 67   0%
                                back-to-indentation                 23   0%
                                c-backward-single-comment                  8   0%
                               c-beginning-of-current-token                  5   0%
                            - c-beginning-of-statement-1                  8   0%
                             - c-beginning-of-macro                  3   0%
                                back-to-indentation                  1   0%
                             - c-backward-sws                       1   0%
                                c-beginning-of-macro                  1   0%
                               c-at-macro-vsemi-p                   1   0%
                           - c-looking-at-inexpr-block                325   0%
                            - c-backward-sws                      154   0%
                             - c-beginning-of-macro                 54   0%
                                back-to-indentation                 18   0%
                                c-backward-single-comment                  8   0%
                                #<compiled 0x43648d>                  1   0%
                                #<compiled 0x40f781>                  1   0%
                               c-beginning-of-current-token                  8   0%
                           - c-backward-over-enum-header                273   0%
                            - c-backward-token-2                  176   0%
                             - c-backward-sws                     108   0%
                              - c-beginning-of-macro                 41   0%
                                 c-backward-single-comment                 12   0%
                                 back-to-indentation                 12   0%
                                c-beginning-of-current-token                  2   0%
                               c-beginning-of-current-token                  9   0%
                              c-on-identifier                       3   0%
                          - c-parse-state                         768   1%
                           - c-parse-state-1                      717   1%
                            - c-append-to-state-cache                296   0%
                             - c-beginning-of-macro                 63   0%
                                back-to-indentation                 25   0%
                             - c-append-lower-brace-pair-to-state-cache                 52   0%
                              - c-beginning-of-macro                  1   0%
                                 back-to-indentation                  1   0%
                            - c-remove-stale-state-cache                204   0%
                             - c-beginning-of-macro                 67   0%
                                back-to-indentation                 25   0%
                                #<compiled 0x43648d>                  3   0%
                                #<compiled 0x40f781>                  2   0%
                               c-end-of-macro                       1   0%
                            - c-parse-state-get-strategy                188   0%
                             - c-get-fallback-scan-pos                159   0%
                              - beginning-of-defun                159   0%
                               - beginning-of-defun-raw                159   0%
                                  syntax-ppss                     158   0%
                             - c-beginning-of-macro                 23   0%
                                back-to-indentation                  8   0%
                                #<compiled 0x43648d>                  2   0%
                                #<compiled 0x40f781>                  1   0%
                           - c-beginning-of-macro                  37   0%
                              back-to-indentation                  13   0%
                             c-syntactic-end-of-macro                  1   0%
                          - c-back-over-compound-identifier                675   1%
                           - c-backward-sws                       201   0%
                            - c-beginning-of-macro                 75   0%
                               back-to-indentation                 28   0%
                               c-backward-single-comment                  2   0%
                               #<compiled 0x40f781>                  1   0%
                           - c-backward-token-2                   154   0%
                              c-beginning-of-current-token                 63   0%
                            - c-backward-sws                       28   0%
                               c-beginning-of-current-token                  1   0%
                             c-on-identifier                      152   0%
                          - c-backward-token-2                    613   0%
                           - c-backward-sws                       295   0%
                              c-beginning-of-current-token                 87   0%
                            - c-beginning-of-macro                 26   0%
                               c-backward-single-comment                 19   0%
                               back-to-indentation                  1   0%
                             c-beginning-of-current-token                 60   0%
                          - c-backward-sws                        389   0%
                           - c-beginning-of-macro                  97   0%
                              back-to-indentation                  35   0%
                              c-backward-single-comment                 17   0%
                              #<compiled 0x43648d>                  3   0%
                              #<compiled 0x40f781>                  2   0%
                             c-beginning-of-current-token                 47   0%
                         - c-forward-label                       1084   1%
                          - c-syntactic-re-search-forward                336   0%
                           - c-beginning-of-macro                 198   0%
                              back-to-indentation                  37   0%
                              #<compiled 0x43648d>                  9   0%
                              #<compiled 0x40f781>                  5   0%
                              c-backward-single-comment                  2   0%
                             #<compiled 0x40ebb1>                   1   0%
                          - c-after-conditional                   208   0%
                           - c-backward-token-2                   193   0%
                            - c-backward-sws                      102   0%
                             - c-beginning-of-macro                 34   0%
                                back-to-indentation                  8   0%
                               c-beginning-of-current-token                  3   0%
                            c-beginning-of-current-token                158   0%
                          - c-forward-sws                          74   0%
                           - c-beginning-of-macro                   2   0%
                              c-backward-single-comment                  1   0%
                         - c-backward-sws                         656   1%
                          - c-beginning-of-macro                  190   0%
                             back-to-indentation                   75   0%
                             c-backward-single-comment                 20   0%
                             #<compiled 0x43648d>                   4   0%
                             #<compiled 0x40f781>                   2   0%
                         - c-font-lock-single-decl                583   0%
                          - c-font-lock-declarators                456   0%
                           - c-do-declarators                     438   0%
                            - c-forward-declarator                279   0%
                             - c-syntactic-re-search-forward                 98   0%
                              - c-beginning-of-macro                 54   0%
                                 back-to-indentation                 13   0%
                                 #<compiled 0x40f781>                  1   0%
                                #<compiled 0x40ebb1>                  3   0%
                             - c-backward-sws                      50   0%
                                c-beginning-of-current-token                 23   0%
                             - c-forward-name                      43   0%
                                c-forward-sws                      14   0%
                               c-forward-sws                        4   0%
                            - c-syntactic-re-search-forward                 44   0%
                             - c-beginning-of-macro                 24   0%
                                back-to-indentation                  8   0%
                                #<compiled 0x40f781>                  2   0%
                            - c-forward-token-2                    37   0%
                             - c-forward-over-token-and-ws                 28   0%
                              - c-forward-over-token                 18   0%
                                 c-forward-sws                      4   0%
                                c-forward-sws                       6   0%
                               c-forward-sws                        5   0%
                              c-forward-sws                        22   0%
                              #<compiled 0x69025d>                 11   0%
                          - c-backward-sws                         62   0%
                           - c-beginning-of-macro                  16   0%
                              c-backward-single-comment                  8   0%
                              back-to-indentation                   1   0%
                             c-beginning-of-current-token                 16   0%
                          - c-determine-limit                      16   0%
                           - c-backward-sws                         3   0%
                            - c-beginning-of-macro                  2   0%
                               back-to-indentation                  1   0%
                           - c-determine-limit                      2   0%
                            - c-backward-sws                        1   0%
                               c-beginning-of-current-token                  1   0%
                             c-semi-pp-to-literal                   1   0%
                            c-fontify-recorded-types-and-refs                 12   0%
                         - c-backward-token-2                     385   0%
                            c-beginning-of-current-token                117   0%
                            c-backward-sws                         97   0%
                         - c-syntactic-re-search-forward                  1   0%
                            c-beginning-of-macro                    1   0%
                        - c-bs-at-toplevel-p                     5487   8%
                         - c-brace-stack-at                      5328   8%
                          - c-update-brace-stack                 5099   8%
                           - c-syntactic-re-search-forward               4119   6%
                            - c-beginning-of-macro               1238   1%
                               back-to-indentation                415   0%
                               #<compiled 0x40f781>                 46   0%
                               #<compiled 0x43648d>                 36   0%
                              #<compiled 0x40ebb1>                 14   0%
                              c-end-of-macro                        6   0%
                             c-beginning-of-current-token                425   0%
                             match-string-no-properties                 16   0%
                        - c-beginning-of-macro                    746   1%
                           back-to-indentation                    188   0%
                           c-backward-single-comment                165   0%
                           #<compiled 0x40f781>                    18   0%
                           #<compiled 0x43648d>                    15   0%
                        - c-forward-sws                           288   0%
                           c-forward-single-comment                 21   0%
                         - c-beginning-of-macro                    13   0%
                            c-backward-single-comment                 10   0%
                            back-to-indentation                     2   0%
                        - c-backward-sws                          102   0%
                         - c-beginning-of-macro                    41   0%
                            back-to-indentation                    12   0%
                            c-backward-single-comment                  2   0%
                            #<compiled 0x40f781>                    1   0%
                          c-beginning-of-current-token                 14   0%
                          c-end-of-macro                            1   0%
                        - c-backward-token-2                        1   0%
                           c-beginning-of-current-token                  1   0%
                         c-skip-comments-and-strings                  4   0%
                         eval                                       1   0%
                      - c-font-lock-cut-off-declarators               5792   9%
                       - c-determine-limit                       2001   3%
                        - c-semi-pp-to-literal                    482   0%
                           c-restore-string-fences                 74   0%
                           c-parse-ps-state-below                   4   0%
                         - c-semi-get-near-cache-entry                  2   0%
                            copy-tree                               1   0%
                           #<compiled 0x4088d1>                     1   0%
                         - c-semi-put-near-cache-entry                  1   0%
                            last                                    1   0%
                        - c-determine-limit                       458   0%
                         - c-semi-pp-to-literal                   125   0%
                            c-restore-string-fences                 31   0%
                         - c-backward-sws                          10   0%
                          - c-beginning-of-macro                    2   0%
                             back-to-indentation                    1   0%
                            c-beginning-of-current-token                  1   0%
                        - c-backward-sws                           86   0%
                         - c-beginning-of-macro                    34   0%
                            back-to-indentation                     8   0%
                            #<compiled 0x40f781>                    1   0%
                            c-backward-single-comment                  1   0%
                       - c-back-over-member-initializers               1797   2%
                        - c-parse-state                           941   1%
                         - c-parse-state-1                        752   1%
                          - c-append-to-state-cache                283   0%
                           - c-beginning-of-macro                 164   0%
                              c-backward-single-comment                133   0%
                              back-to-indentation                   9   0%
                              #<compiled 0x40f781>                  1   0%
                              #<compiled 0x43648d>                  1   0%
                          - c-remove-stale-state-cache                276   0%
                           - c-beginning-of-macro                 213   0%
                              c-backward-single-comment                147   0%
                              back-to-indentation                  28   0%
                              #<compiled 0x40f781>                  2   0%
                              #<compiled 0x43648d>                  1   0%
                          - c-parse-state-get-strategy                165   0%
                           - c-beginning-of-macro                 159   0%
                              c-backward-single-comment                137   0%
                              back-to-indentation                   8   0%
                              #<compiled 0x43648d>                  1   0%
                         - c-beginning-of-macro                   173   0%
                            c-backward-single-comment                139   0%
                            back-to-indentation                    13   0%
                            #<compiled 0x40f781>                    1   0%
                         - c-syntactic-end-of-macro                  7   0%
                            c-end-of-macro                          3   0%
                           #<compiled 0x3fae45>                     2   0%
                        - c-backward-sws                          397   0%
                         - c-beginning-of-macro                   103   0%
                            back-to-indentation                    37   0%
                            c-backward-single-comment                  3   0%
                            #<compiled 0x40f781>                    2   0%
                            #<compiled 0x43648d>                    2   0%
                        - c-back-over-compound-identifier                 58   0%
                           c-on-identifier                         38   0%
                         - c-backward-sws                           6   0%
                          - c-beginning-of-macro                    2   0%
                             c-backward-single-comment                  1   0%
                         - c-backward-token-2                       3   0%
                            c-beginning-of-current-token                  1   0%
                        - c-just-after-func-arglist-p                 52   0%
                         - c-beginning-of-statement-1                 44   0%
                          - c-crosses-statement-barrier-p                 12   0%
                             c-backward-sws                         6   0%
                             c-forward-sws                          1   0%
                          - c-backward-sws                          6   0%
                             c-beginning-of-macro                   1   0%
                          - c-beginning-of-macro                    6   0%
                             back-to-indentation                    4   0%
                          - c-backward-token-2                      2   0%
                           - c-backward-sws                         1   0%
                              c-beginning-of-macro                  1   0%
                            c-at-macro-vsemi-p                      2   0%
                          - c-punctuation-in                        1   0%
                             c-forward-sws                          1   0%
                         - c-forward-decl-or-cast-1                  8   0%
                          - c-backward-token-2                      3   0%
                             c-backward-sws                         2   0%
                            c-forward-type                          2   0%
                        - c-backward-token-2                        2   0%
                           c-beginning-of-current-token                  2   0%
                       - c-parse-state                            691   1%
                        - c-parse-state-1                         673   1%
                         - c-append-lower-brace-pair-to-state-cache                423   0%
                          - c-beginning-of-macro                    9   0%
                             back-to-indentation                    2   0%
                             #<compiled 0x43648d>                   1   0%
                         - c-remove-stale-state-cache-backwards                225   0%
                          - c-state-literal-at                    177   0%
                             c-state-pp-to-literal                112   0%
                           - c-state-safe-place                    65   0%
                              c-state-pp-to-literal                 55   0%
                            - c-beginning-of-macro                  9   0%
                               c-backward-single-comment                  8   0%
                          - c-beginning-of-macro                    6   0%
                             back-to-indentation                    4   0%
                            c-state-balance-parens-backwards                  5   0%
                         - c-parse-state-get-strategy                  8   0%
                          - c-beginning-of-macro                    5   0%
                             #<compiled 0x40f781>                   1   0%
                             back-to-indentation                    1   0%
                            c-get-cache-scan-pos                    1   0%
                         - c-remove-stale-state-cache                  7   0%
                          - c-beginning-of-macro                    4   0%
                             back-to-indentation                    1   0%
                           c-append-to-state-cache                  5   0%
                        - c-beginning-of-macro                     13   0%
                           back-to-indentation                      7   0%
                           #<compiled 0x43648d>                     1   0%
                       - c-syntactic-skip-backward                333   0%
                        - c-backward-sws                          115   0%
                         - c-beginning-of-macro                    54   0%
                            back-to-indentation                    19   0%
                            c-backward-single-comment                  3   0%
                            #<compiled 0x40f781>                    1   0%
                           c-beginning-of-current-token                  1   0%
                        - c-literal-start                          81   0%
                         - c-semi-pp-to-literal                    76   0%
                            c-semi-get-near-cache-entry                  4   0%
                            #<compiled 0x4088d1>                    2   0%
                            c-parse-ps-state-below                  1   0%
                        - c-beginning-of-macro                     65   0%
                           c-backward-single-comment                 23   0%
                           back-to-indentation                     22   0%
                       - c-at-toplevel-p                          137   0%
                        - c-parse-state                            75   0%
                         - c-parse-state-1                         66   0%
                          - c-append-to-state-cache                 28   0%
                           - c-beginning-of-macro                  10   0%
                              back-to-indentation                   1   0%
                          - c-remove-stale-state-cache                 28   0%
                           - c-beginning-of-macro                  16   0%
                              back-to-indentation                   6   0%
                          - c-parse-state-get-strategy                  6   0%
                           - c-beginning-of-macro                   6   0%
                              back-to-indentation                   5   0%
                         - c-beginning-of-macro                     6   0%
                            back-to-indentation                     2   0%
                        - c-search-uplist-for-classkey                 60   0%
                         - c-looking-at-decl-block                 59   0%
                          - c-syntactic-skip-backward                 33   0%
                           - c-backward-sws                        17   0%
                              c-beginning-of-macro                  1   0%
                           - c-beginning-of-macro                   6   0%
                              back-to-indentation                   3   0%
                           - c-literal-start                        2   0%
                              c-semi-pp-to-literal                  2   0%
                          - c-backward-sws                          5   0%
                           - c-beginning-of-macro                   2   0%
                              c-backward-single-comment                  2   0%
                            c-syntactic-re-search-forward                  2   0%
                       - c-forward-decl-or-cast-1                  76   0%
                        - c-forward-type                           36   0%
                           c-forward-name                          14   0%
                           c-forward-keyword-clause                  2   0%
                         - c-check-qualified-type                   1   0%
                          - c-forward-over-compound-identifier                  1   0%
                             c-on-identifier                        1   0%
                        - c-forward-name                            9   0%
                           c-forward-sws                            2   0%
                        - c-backward-token-2                        8   0%
                           c-beginning-of-current-token                  3   0%
                           c-backward-sws                           2   0%
                          c-forward-keyword-clause                  1   0%
                       - c-get-fontification-context                 37   0%
                        - c-inside-bracelist-p                     26   0%
                         - c-looking-at-or-maybe-in-bracelist                 18   0%
                          - c-backward-token-2                     12   0%
                           - c-backward-sws                         8   0%
                              c-beginning-of-macro                  1   0%
                              c-beginning-of-current-token                  1   0%
                          - c-backward-sws                          4   0%
                             c-beginning-of-macro                   2   0%
                         - c-looking-at-inexpr-block                  4   0%
                          - c-backward-sws                          1   0%
                             c-beginning-of-macro                   1   0%
                         - c-backward-over-enum-header                  2   0%
                            c-backward-token-2                      1   0%
                        - c-parse-state                             8   0%
                         - c-parse-state-1                          6   0%
                          - c-remove-stale-state-cache                  3   0%
                           - c-beginning-of-macro                   3   0%
                              back-to-indentation                   1   0%
                            c-parse-state-get-strategy                  2   0%
                           c-beginning-of-macro                     2   0%
                       - c-forward-sws                             33   0%
                          c-forward-single-comment                 11   0%
                        - c-beginning-of-macro                      1   0%
                           c-backward-single-comment                  1   0%
                       - c-font-lock-single-decl                   17   0%
                        - c-font-lock-declarators                  13   0%
                         - c-do-declarators                        12   0%
                          - c-forward-declarator                    7   0%
                           - c-backward-sws                         3   0%
                              c-beginning-of-current-token                  2   0%
                             c-syntactic-re-search-forward                  1   0%
                            c-forward-sws                           1   0%
                          c-backward-sws                            3   0%
                         c-skip-comments-and-strings                  4   0%
                      - c-font-lock-enclosing-decls               4306   6%
                       - c-parse-state                           2053   3%
                        - c-parse-state-1                        1878   3%
                         - c-append-lower-brace-pair-to-state-cache                527   0%
                          - c-beginning-of-macro                   18   0%
                             back-to-indentation                    7   0%
                             #<compiled 0x40f781>                   2   0%
                         - c-remove-stale-state-cache-backwards                526   0%
                          - c-state-literal-at                    314   0%
                           - c-state-safe-place                   174   0%
                              c-state-pp-to-literal                135   0%
                            - c-beginning-of-macro                 39   0%
                               c-backward-single-comment                 35   0%
                               back-to-indentation                  1   0%
                           - c-state-pp-to-literal                140   0%
                              #<compiled 0x40f561>                  1   0%
                          - c-beginning-of-macro                   68   0%
                             c-backward-single-comment                 55   0%
                             back-to-indentation                    6   0%
                            c-state-balance-parens-backwards                 40   0%
                         - c-append-to-state-cache                386   0%
                          - c-beginning-of-macro                  125   0%
                             c-backward-single-comment                 86   0%
                             back-to-indentation                   19   0%
                             #<compiled 0x40f781>                   2   0%
                         - c-parse-state-get-strategy                198   0%
                          - c-beginning-of-macro                  179   0%
                             c-backward-single-comment                143   0%
                             back-to-indentation                   13   0%
                             #<compiled 0x40f781>                   1   0%
                         - c-remove-stale-state-cache                198   0%
                          - c-beginning-of-macro                  150   0%
                             c-backward-single-comment                 91   0%
                             back-to-indentation                   14   0%
                             #<compiled 0x43648d>                   3   0%
                             #<compiled 0x40f781>                   2   0%
                        - c-beginning-of-macro                    158   0%
                           c-backward-single-comment                133   0%
                           back-to-indentation                     12   0%
                           #<compiled 0x40f781>                     1   0%
                        - c-syntactic-end-of-macro                  3   0%
                           c-end-of-macro                           1   0%
                       - c-determine-limit                       1342   2%
                        - c-determine-limit                       336   0%
                         - c-backward-sws                          15   0%
                          - c-beginning-of-macro                    6   0%
                             back-to-indentation                    2   0%
                           c-semi-pp-to-literal                     3   0%
                        - c-backward-sws                           85   0%
                         - c-beginning-of-macro                    36   0%
                            back-to-indentation                    17   0%
                            #<compiled 0x43648d>                    1   0%
                            #<compiled 0x40f781>                    1   0%
                        - c-semi-pp-to-literal                     26   0%
                           c-semi-get-near-cache-entry                  4   0%
                           #<compiled 0x4088d1>                     2   0%
                       - c-syntactic-skip-backward                745   1%
                        - c-literal-start                         300   0%
                         - c-semi-pp-to-literal                   292   0%
                          - c-semi-get-near-cache-entry                 10   0%
                             copy-tree                              1   0%
                            c-parse-ps-state-below                  2   0%
                            c-semi-put-near-cache-entry                  1   0%
                            #<compiled 0x4088d1>                    1   0%
                        - c-backward-sws                          248   0%
                         - c-beginning-of-macro                    81   0%
                            back-to-indentation                    41   0%
                            #<compiled 0x40f781>                    1   0%
                            #<compiled 0x43648d>                    1   0%
                           c-beginning-of-current-token                  1   0%
                        - c-beginning-of-macro                     95   0%
                           back-to-indentation                     48   0%
                           #<compiled 0x40f781>                     1   0%
                       - c-forward-sws                             58   0%
                          c-forward-single-comment                 10   0%
                        - c-beginning-of-macro                      2   0%
                           c-backward-single-comment                  1   0%
                           back-to-indentation                      1   0%
                       - c-bs-at-toplevel-p                         9   0%
                        - c-brace-stack-at                          9   0%
                         - c-update-brace-stack                     9   0%
                          - c-syntactic-re-search-forward                  8   0%
                             c-beginning-of-macro                   3   0%
                            c-beginning-of-current-token                  1   0%
                         c-skip-comments-and-strings                  2   0%
                      - c-font-lock-complex-decl-prepare               2186   3%
                       - c-parse-state                           1573   2%
                        - c-parse-state-1                        1355   2%
                         - c-append-to-state-cache                644   1%
                          - c-beginning-of-macro                  200   0%
                             c-backward-single-comment                141   0%
                             back-to-indentation                   18   0%
                             #<compiled 0x43648d>                   3   0%
                             #<compiled 0x40f781>                   3   0%
                          - c-append-lower-brace-pair-to-state-cache                 78   0%
                           - c-beginning-of-macro                   1   0%
                              back-to-indentation                   1   0%
                         - c-remove-stale-state-cache                452   0%
                          - c-beginning-of-macro                  190   0%
                             c-backward-single-comment                139   0%
                             back-to-indentation                   19   0%
                             #<compiled 0x40f781>                   3   0%
                             #<compiled 0x43648d>                   1   0%
                         - c-parse-state-get-strategy                183   0%
                          - c-beginning-of-macro                  170   0%
                             c-backward-single-comment                133   0%
                             back-to-indentation                   12   0%
                          - c-get-fallback-scan-pos                  6   0%
                           - beginning-of-defun                     6   0%
                            - beginning-of-defun-raw                  6   0%
                               syntax-ppss                          6   0%
                           c-append-lower-brace-pair-to-state-cache                 29   0%
                         - c-remove-stale-state-cache-backwards                  2   0%
                          - c-state-literal-at                      1   0%
                           - c-state-safe-place                     1   0%
                              c-state-pp-to-literal                  1   0%
                        - c-beginning-of-macro                    197   0%
                           c-backward-single-comment                156   0%
                           back-to-indentation                     18   0%
                           #<compiled 0x43648d>                     1   0%
                        - c-syntactic-end-of-macro                  3   0%
                           c-end-of-macro                           1   0%
                          #<compiled 0x3fae45>                      1   0%
                       - c-backward-sws                           332   0%
                        - c-beginning-of-macro                     86   0%
                           back-to-indentation                     30   0%
                           #<compiled 0x40f781>                     4   0%
                           c-backward-single-comment                  4   0%
                       - c-beginning-of-macro                     184   0%
                          c-backward-single-comment                158   0%
                          back-to-indentation                      10   0%
                          #<compiled 0x40f781>                      2   0%
                         c-skip-comments-and-strings                  4   0%
                      - c-font-lock-enum-tail                    1234   1%
                       - c-parse-state                            963   1%
                        - c-parse-state-1                         761   1%
                         - c-remove-stale-state-cache                286   0%
                          - c-beginning-of-macro                  212   0%
                             c-backward-single-comment                148   0%
                             back-to-indentation                   33   0%
                         - c-append-to-state-cache                267   0%
                          - c-beginning-of-macro                  172   0%
                             c-backward-single-comment                128   0%
                             back-to-indentation                   18   0%
                             #<compiled 0x43648d>                   1   0%
                             #<compiled 0x40f781>                   1   0%
                         - c-parse-state-get-strategy                167   0%
                          - c-beginning-of-macro                  162   0%
                             c-backward-single-comment                124   0%
                             back-to-indentation                    9   0%
                             #<compiled 0x43648d>                   1   0%
                        - c-beginning-of-macro                    190   0%
                           c-backward-single-comment                161   0%
                           back-to-indentation                     14   0%
                           #<compiled 0x40f781>                     1   0%
                          c-syntactic-end-of-macro                  2   0%
                          #<compiled 0x3fae45>                      2   0%
                       - c-backward-over-enum-header                253   0%
                        - c-backward-token-2                      151   0%
                         - c-backward-sws                          98   0%
                          - c-beginning-of-macro                   39   0%
                             c-backward-single-comment                 15   0%
                             back-to-indentation                   11   0%
                             #<compiled 0x40f781>                   2   0%
                            c-beginning-of-current-token                  4   0%
                           c-beginning-of-current-token                  6   0%
                          c-on-identifier                           5   0%
                         c-skip-comments-and-strings                  4   0%
                       - c-font-lock-declarators                    1   0%
                        - c-do-declarators                          1   0%
                         - c-forward-declarator                     1   0%
                          - c-backward-sws                          1   0%
                             c-beginning-of-macro                   1   0%
                      - c-font-lock-invalid-single-quotes                462   0%
                       - c-literal-limits                         267   0%
                        - c-full-pp-to-literal                    260   0%
                         - c-full-get-near-cache-entry                 11   0%
                          - copy-tree                               7   0%
                             copy-tree                              1   0%
                           c-parse-ps-state-below                   4   0%
                         - c-full-put-near-cache-entry                  2   0%
                            last                                    1   0%
                        #<compiled 0x687f29>                      253   0%
                        #<compiled 0x687f65>                      237   0%
                      - #<compiled 0x6853c1>                      229   0%
                         c-forward-sws                              3   0%
                         c-skip-comments-and-strings                  1   0%
                        #<compiled 0x685371>                      220   0%
                        #<compiled 0x687f85>                      213   0%
                      - #<compiled 0x6987ad>                      188   0%
                       - c-font-lock-doc-comments                 183   0%
                        - c-literal-start                         157   0%
                         - c-semi-pp-to-literal                   151   0%
                            c-restore-string-fences                  4   0%
                            c-semi-get-near-cache-entry                  3   0%
                            #<compiled 0x4088d1>                    1   0%
                      - c-font-lock-enum-body                      46   0%
                       - c-backward-over-enum-header                  5   0%
                        - c-backward-token-2                        2   0%
                           c-backward-sws                           1   0%
                          c-on-identifier                           1   0%
                         c-forward-sws                              1   0%
                      - #<compiled 0x1fc0014988e9>                 29   0%
                         eval                                       1   0%
                     - font-lock-fontify-syntactically-region               1031   1%
                        syntax-ppss                               707   1%
                        looking-back                               28   0%
                     - font-lock-unfontify-region                  12   0%
                        font-lock-default-unfontify-region                  9   0%
                       #<compiled 0x7dad1d>                         1   0%
                    - c-before-context-fl-expand-region               2160   3%
                     - mapc                                      2158   3%
                      - #<compiled 0x620781>                     2157   3%
                       - c-context-expand-fl-region               2138   3%
                        - c-fl-decl-start                        1511   2%
                         - c-determine-limit                      773   1%
                          - c-determine-limit                     201   0%
                           - c-semi-pp-to-literal                  67   0%
                              c-restore-string-fences                 10   0%
                           - c-backward-sws                        10   0%
                              c-beginning-of-macro                  4   0%
                           - c-determine-limit                      2   0%
                            - c-semi-pp-to-literal                  1   0%
                               c-restore-string-fences                  1   0%
                          - c-semi-pp-to-literal                  177   0%
                             c-restore-string-fences                 34   0%
                             c-semi-get-near-cache-entry                  4   0%
                             c-parse-ps-state-below                  3   0%
                             c-semi-put-near-cache-entry                  1   0%
                          - c-backward-sws                         76   0%
                           - c-beginning-of-macro                  25   0%
                              back-to-indentation                   3   0%
                              c-backward-single-comment                  3   0%
                              #<compiled 0x40f781>                  1   0%
                              #<compiled 0x43648d>                  1   0%
                         - c-syntactic-skip-backward                260   0%
                          - c-backward-sws                         81   0%
                           - c-beginning-of-macro                  33   0%
                              back-to-indentation                   9   0%
                              #<compiled 0x43648d>                  1   0%
                              #<compiled 0x40f781>                  1   0%
                              c-backward-single-comment                  1   0%
                             c-backward-single-comment                  1   0%
                             c-beginning-of-current-token                  1   0%
                          - c-literal-start                        74   0%
                           - c-semi-pp-to-literal                  67   0%
                              c-semi-get-near-cache-entry                  2   0%
                              #<compiled 0x4088d1>                  1   0%
                              c-parse-ps-state-below                  1   0%
                          - c-beginning-of-macro                   41   0%
                             back-to-indentation                   13   0%
                             c-backward-single-comment                  4   0%
                             #<compiled 0x43648d>                   2   0%
                             #<compiled 0x40f781>                   1   0%
                         - c-parse-state                          132   0%
                          - c-parse-state-1                       127   0%
                           - c-append-to-state-cache                 48   0%
                            - c-beginning-of-macro                  6   0%
                               back-to-indentation                  2   0%
                               #<compiled 0x43648d>                  1   0%
                             c-append-lower-brace-pair-to-state-cache                 47   0%
                           - c-remove-stale-state-cache                 23   0%
                            - c-beginning-of-macro                  5   0%
                               back-to-indentation                  2   0%
                           - c-parse-state-get-strategy                  6   0%
                              c-beginning-of-macro                  5   0%
                          - c-beginning-of-macro                    3   0%
                             back-to-indentation                    2   0%
                            c-syntactic-end-of-macro                  1   0%
                         - c-literal-start                        114   0%
                          - c-semi-pp-to-literal                  103   0%
                           - c-semi-get-near-cache-entry                 12   0%
                              copy-tree                             3   0%
                             c-restore-string-fences                  5   0%
                             c-parse-ps-state-below                  3   0%
                             #<compiled 0x4088d1>                   2   0%
                         - c-cheap-inside-bracelist-p                 50   0%
                          - c-backward-sws                         24   0%
                           - c-beginning-of-macro                   7   0%
                              back-to-indentation                   4   0%
                          - c-backward-token-2                      9   0%
                             c-beginning-of-current-token                  5   0%
                           - c-backward-sws                         1   0%
                              c-beginning-of-current-token                  1   0%
                         - c-forward-type                          38   0%
                          - c-check-qualified-type                 10   0%
                           - c-forward-over-compound-identifier                 10   0%
                              c-forward-over-token                  4   0%
                              c-on-identifier                       3   0%
                          - c-forward-name                          7   0%
                             c-forward-sws                          1   0%
                         - c-forward-sws                           36   0%
                          - c-beginning-of-macro                   10   0%
                             c-backward-single-comment                  7   0%
                             back-to-indentation                    2   0%
                            c-forward-single-comment                  3   0%
                         - c-looking-at-or-maybe-in-bracelist                 22   0%
                          - c-backward-sws                         10   0%
                           - c-beginning-of-macro                   4   0%
                              back-to-indentation                   1   0%
                              c-backward-single-comment                  1   0%
                              #<compiled 0x40f781>                  1   0%
                             c-beginning-of-current-token                  1   0%
                          - c-backward-token-2                      8   0%
                           - c-backward-sws                         3   0%
                            - c-beginning-of-macro                  1   0%
                               back-to-indentation                  1   0%
                             c-beginning-of-current-token                  1   0%
                          - c-beginning-of-statement-1                  2   0%
                           - c-beginning-of-macro                   1   0%
                              back-to-indentation                   1   0%
                         - c-backward-sws                          17   0%
                          - c-beginning-of-macro                    7   0%
                             back-to-indentation                    2   0%
                        - c-fl-decl-end                           605   0%
                         - c-literal-start                        416   0%
                          - c-semi-pp-to-literal                  408   0%
                             c-parse-ps-state-below                193   0%
                           - c-semi-get-near-cache-entry                  5   0%
                              copy-tree                             1   0%
                             c-semi-put-near-cache-entry                  3   0%
                             #<compiled 0x4088d1>                   3   0%
                         - c-forward-declarator                    56   0%
                          - c-syntactic-re-search-forward                 23   0%
                           - c-beginning-of-macro                  10   0%
                              back-to-indentation                   1   0%
                             #<compiled 0x40ebb1>                   1   0%
                          - c-forward-name                         15   0%
                           - c-forward-sws                          5   0%
                            - c-beginning-of-macro                  1   0%
                               c-backward-single-comment                  1   0%
                          - c-backward-sws                          6   0%
                             c-beginning-of-current-token                  3   0%
                           - c-beginning-of-macro                   1   0%
                              back-to-indentation                   1   0%
                         - c-backward-sws                          53   0%
                          - c-beginning-of-macro                   13   0%
                             back-to-indentation                    1   0%
                             #<compiled 0x40f781>                   1   0%
                            c-beginning-of-current-token                  5   0%
                         - c-beginning-of-macro                    21   0%
                            back-to-indentation                     7   0%
                         - c-forward-token-2                       18   0%
                          - c-forward-over-token-and-ws                 16   0%
                           - c-forward-sws                          9   0%
                            - c-beginning-of-macro                  3   0%
                               c-backward-single-comment                  2   0%
                              c-forward-single-comment                  3   0%
                             c-forward-over-token                   3   0%
                            c-forward-sws                           2   0%
                           c-on-identifier                          9   0%
                           c-end-of-macro                           1   0%
                    - #<compiled 0x6207c1>                        221   0%
                     - c-clear-string-fences                      209   0%
                        #<compiled 0x68cc51>                        1   0%
                      c-restore-string-fences                       5   0%
                  - bug-reference-fontify                         136   0%
                     syntax-ppss                                    7   0%
                     bug-reference-unfontify                        2   0%
               - run-with-timer                                    41   0%
                - apply                                            41   0%
                 - run-at-time                                     37   0%
                    timer-relative-time                            17   0%
                  - timer-activate                                 12   0%
                   - timer--activate                                6   0%
                      timer--time-less-p                            4   0%
                      timerp                                        1   0%
                  - timer-set-time                                  6   0%
                   - timer--time-setter                             5   0%
                      timerp                                        1   0%
                 #<compiled 0x6da5f5>                               1   0%
             - tool-bar-make-keymap                               294   0%
              - tool-bar-make-keymap-1                            284   0%
               - mapcar                                           283   0%
                - #<compiled 0x1fc0014b3fa1>                      274   0%
                 - eval                                           254   0%
                  - find-image                                    248   0%
                     image-search-load-path                       213   0%
                   - cond                                          20   0%
                    - not                                           7   0%
                     - display-color-p                              6   0%
                        display-graphic-p                           2   0%
                    - <                                             6   0%
                       display-color-cells                          2   0%
                 - display-images-p                                 3   0%
                  - display-graphic-p                               2   0%
                     framep-on-display                              1   0%
             - funcall                                             78   0%
              - #<compiled 0x1fc001478859>                         75   0%
               - gui-backend-selection-exists-p                    75   0%
                - apply                                            74   0%
                   #<compiled 0x1fc00146eaf5>                      74   0%
             - eval                                                53   0%
              - if                                                 35   0%
               - display-graphic-p                                  1   0%
                  framep-on-display                                 1   0%
                unless                                              3   0%
                mode-line-eol-desc                                  3   0%
               menu-bar-update-buffers                             41   0%
               file-remote-p                                       24   0%
             - kill-this-buffer-enabled-p                          15   0%
                menu-bar-non-minibuffer-window-p                    1   0%
                buffer-list                                         1   0%
             - mode-line-default-help-echo                         10   0%
              - window-at-side-p                                    5   0%
               - window-pixel-edges                                 3   0%
                  window-edges                                      2   0%
             - #<compiled 0x1fc0014d60f3>                           9   0%
              - apply                                               9   0%
               - redisplay--pre-redisplay-functions                  7   0%
                - run-hook-with-args                                2   0%
                 - redisplay--update-region-highlight                  1   0%
                    #<compiled 0x1fc00146e97b>                      1   0%
             - keymap-canonicalize                                  7   0%
                map-keymap                                          1   0%
               menu-bar-non-minibuffer-window-p                     4   0%
               and                                                  2   0%
           - input-pending-p                                       56   0%
            - timer-event-handler                                  51   0%
             - apply                                               42   0%
                jit-lock-force-redisplay                           11   0%
               cancel-timer-internal                                2   0%
          - if                                                   2355   3%
           - scroll-up                                            174   0%
              file-remote-p                                        94   0%
            - eval                                                 72   0%
               if                                                  49   0%
               mode-line-eol-desc                                   3   0%
             - unless                                               1   0%
              - if                                                  1   0%
                 display-graphic-p                                  1   0%
   - execute-extended-command                                      20   0%
    - sit-for                                                      14   0%
     - redisplay                                                   11   0%
      - redisplay_internal (C function)                             1   0%
       - tool-bar-make-keymap                                       1   0%
        - tool-bar-make-keymap-1                                    1   0%
         - mapcar                                                   1   0%
          - #<compiled 0x1fc0014b3fa1>                              1   0%
           - eval                                                   1   0%
            - find-image                                            1   0%
               image-search-load-path                               1   0%
    - command-execute                                               2   0%
     - call-interactively                                           2   0%
      - funcall-interactively                                       2   0%
         profiler-report                                            2   0%
   - completion-at-point                                            5   0%
    - completion-in-region                                          5   0%
     - completion--in-region                                        5   0%
      - #<compiled 0x51e665>                                        5   0%
       - apply                                                      5   0%
        - #<compiled 0x1fc0014663a9>                                5   0%
         - completion--in-region-1                                  5   0%
          - completion--do-completion                               5   0%
           - completion-try-completion                              5   0%
            - completion--nth-completion                            5   0%
             - completion--some                                     5   0%
              - #<compiled 0x51e699>                                5   0%
                 completion-basic-try-completion                    5   0%
   - handle-focus-out                                               1   0%
    - #<compiled 0x563da1>                                          1   0%
     - apply                                                        1   0%
      - blink-cursor--rescan-frames                                 1   0%
       - blink-cursor-check                                         1   0%
        - blink-cursor--should-blink                                1   0%
           frame-focus-state                                        1   0%
  - byte-code                                                     145   0%
   - read-extended-command                                         93   0%
    - completing-read                                              93   0%
     - completing-read-default                                     93   0%
      - read-from-minibuffer                                       77   0%
       - command-execute                                           33   0%
        - call-interactively                                       33   0%
         - funcall-interactively                                   33   0%
          - minibuffer-complete                                    31   0%
           - completion-in-region                                  31   0%
            - completion--in-region                                31   0%
             - #<compiled 0x92dcb1>                                31   0%
              - apply                                              31   0%
               - #<compiled 0x1fc0014663a9>                        31   0%
                - completion--in-region-1                          31   0%
                 - completion--do-completion                       31   0%
                  - completion-try-completion                      24   0%
                   - completion--nth-completion                    24   0%
                    - completion--some                             24   0%
                     - #<compiled 0x92dcd9>                        24   0%
                      - completion-basic-try-completion                 24   0%
                       - try-completion                            24   0%
                        - #<compiled 0x1fc00147c785>                 24   0%
                           complete-with-action                    24   0%
                  - minibuffer-completion-help                      6   0%
                   - completion-all-completions                     3   0%
                    - completion--nth-completion                    3   0%
                     - completion--some                             3   0%
                      - #<compiled 0x6ad719>                        3   0%
                       - completion-basic-all-completions                  3   0%
                        - completion-pcm--all-completions                  3   0%
                         - all-completions                          3   0%
                          - #<compiled 0x1fc00147c785>                  3   0%
                             complete-with-action                   3   0%
                   - display-completion-list                        2   0%
                    - run-hooks                                     2   0%
                     - completion-setup-function                    2   0%
                      - completion-list-mode                        1   0%
                       - run-mode-hooks                             1   0%
                          run-hooks                                 1   0%
                   - temp-buffer-window-show                        1   0%
                    - display-buffer                                1   0%
                     - display-buffer-at-bottom                     1   0%
                      - walk-window-tree                            1   0%
                       - walk-window-tree-1                         1   0%
                        - #<compiled 0x6ad785>                      1   0%
                           window-in-direction                      1   0%
                  - minibuffer-hide-completions                     1   0%
                   - bury-buffer                                    1   0%
                    - window--delete                                1   0%
                     - delete-window                                1   0%
                      - window-sizable-p                            1   0%
                       - window-sizable                             1   0%
                          window-size-fixed-p                       1   0%
            self-insert-command                                     1   0%
          - minibuffer-complete-and-exit                            1   0%
             completion-complete-and-exit                           1   0%
       - timer-event-handler                                        4   0%
        - apply                                                     2   0%
           #<compiled 0x1fc001483e07>                               2   0%
        - timer-inc-time                                            1   0%
           timer-relative-time                                      1   0%
        - timer-activate-when-idle                                  1   0%
           timer--activate                                          1   0%
       - frame-windows-min-size                                     1   0%
          window-min-size                                           1   0%
   - read--expression                                              52   0%
    - read-from-minibuffer                                         30   0%
     - minibuffer-inactive-mode                                     1   0%
        kill-all-local-variables                                    1   0%
     - window--sanitize-window-sizes                                1   0%
      - walk-window-tree                                            1   0%
       - walk-window-tree-1                                         1   0%
        - #<compiled 0x51b36d>                                      1   0%
         - window-min-size                                          1   0%
          - window--min-size-1                                      1   0%
           - window-size-fixed-p                                    1   0%
            - window--size-fixed-1                                  1   0%
               window--preserve-size                                1   0%
- ...                                                           14130  22%
   Automatic GC                                                 14130  22%
- timer-event-handler                                               2   0%
 - apply                                                            2   0%
    #<compiled 0x1fc001483e07>                                      2   0%
  undo-auto--add-boundary                                           1   0%
  jit-lock--antiblink-post-command                                  1   0%
- redisplay_internal (C function)                                   1   0%
 - funcall                                                          1   0%
  - #<compiled 0x1fc001478859>                                      1   0%
   - gui-backend-selection-exists-p                                 1   0%
    - apply                                                         1   0%
       #<compiled 0x1fc00146eaf5>                                   1   0%

[-- Attachment #3: profile-master --]
[-- Type: application/octet-stream, Size: 56849 bytes --]

- command-execute                                               12617  59%
 - call-interactively                                           12617  59%
  - funcall-interactively                                       12538  59%
   - eval-expression                                            12519  59%
    - eval                                                      12519  59%
     - time-scroll                                              12519  59%
      - message                                                 12519  59%
       - let                                                    12519  59%
        - condition-case                                        12519  59%
         - while                                                12518  59%
          - sit-for                                             11892  56%
           - redisplay                                          11854  55%
            - redisplay_internal (C function)                   10268  48%
             - jit-lock-function                                 9516  44%
              - jit-lock-fontify-now                             9513  44%
               - jit-lock--run-functions                         9473  44%
                - run-hook-wrapped                               9472  44%
                 - #<compiled 0x5b11abad56a68f5>                 9468  44%
                  - font-lock-fontify-region                     9450  44%
                   - c-font-lock-fontify-region                  9440  44%
                    - font-lock-default-fontify-region               9027  42%
                     - font-lock-fontify-keywords-region               8844  41%
                      - c-font-lock-declarations                 5825  27%
                       - c-find-decl-spots                       5713  26%
                        - #<compiled -0x1dce1c4a7fd2fa85>               3616  17%
                         - c-forward-decl-or-cast-1               1504   7%
                          - c-forward-type                        893   4%
                           - c-forward-name                       249   1%
                              c-forward-sws                        58   0%
                           - c-check-qualified-type                180   0%
                            - c-forward-over-compound-identifier                149   0%
                             - c-forward-over-token                 50   0%
                                c-forward-sws                      21   0%
                               c-forward-sws                       29   0%
                               c-on-identifier                     28   0%
                           - c-add-type                            13   0%
                            - c-syntactic-content                  10   0%
                               c-forward-sws                        2   0%
                               apply                                1   0%
                           - c-forward-keyword-clause                 10   0%
                              c-forward-sws                         4   0%
                             c-forward-sws                          9   0%
                             #<compiled 0x23c57d3a18592c3>                  1   0%
                          - c-backward-token-2                     81   0%
                             c-backward-sws                        33   0%
                             c-beginning-of-current-token                  9   0%
                            c-forward-sws                          33   0%
                          - c-directly-in-class-called-p                 25   0%
                           - c-parse-state                         19   0%
                            - c-parse-state-1                      17   0%
                             - c-remove-stale-state-cache                  5   0%
                                c-beginning-of-macro                  2   0%
                             - c-append-to-state-cache                  5   0%
                                c-beginning-of-macro                  2   0%
                             - c-parse-state-get-strategy                  4   0%
                                c-beginning-of-macro                  3   0%
                            - c-beginning-of-macro                  2   0%
                               back-to-indentation                  1   0%
                           - c-looking-at-decl-block                  6   0%
                            - c-syntactic-skip-backward                  2   0%
                             - c-backward-sws                       1   0%
                                c-beginning-of-macro                  1   0%
                             - c-literal-start                      1   0%
                                c-semi-pp-to-literal                  1   0%
                          - c-forward-name                         18   0%
                             c-forward-sws                          5   0%
                            c-forward-annotation                   12   0%
                          - c-forward-keyword-clause                  6   0%
                             c-forward-sws                          3   0%
                          - c-backward-sws                          3   0%
                             c-beginning-of-current-token                  2   0%
                            #<compiled 0x23c57d3a18592c3>                  1   0%
                         - c-get-fontification-context                962   4%
                          - c-inside-bracelist-p                  282   1%
                           - c-looking-at-or-maybe-in-bracelist                137   0%
                            - c-backward-token-2                   72   0%
                             - c-backward-sws                      36   0%
                              - c-beginning-of-macro                 12   0%
                                 back-to-indentation                  2   0%
                                c-beginning-of-current-token                  2   0%
                               c-beginning-of-current-token                  2   0%
                            - c-backward-sws                       43   0%
                             - c-beginning-of-macro                 17   0%
                                c-backward-single-comment                  2   0%
                                back-to-indentation                  2   0%
                              c-beginning-of-statement-1                  1   0%
                           - c-backward-over-enum-header                 69   0%
                            - c-backward-token-2                   53   0%
                             - c-backward-sws                      26   0%
                              - c-beginning-of-macro                  7   0%
                                 back-to-indentation                  3   0%
                                c-beginning-of-current-token                  3   0%
                               c-beginning-of-current-token                  2   0%
                              c-on-identifier                       2   0%
                           - c-looking-at-inexpr-block                 62   0%
                            - c-backward-sws                       31   0%
                             - c-beginning-of-macro                 13   0%
                                back-to-indentation                  4   0%
                                c-backward-single-comment                  1   0%
                               c-beginning-of-current-token                  2   0%
                          - c-back-over-compound-identifier                182   0%
                             c-on-identifier                       70   0%
                           - c-backward-sws                        42   0%
                            - c-beginning-of-macro                 11   0%
                               back-to-indentation                  3   0%
                              c-beginning-of-current-token                  1   0%
                           - c-backward-token-2                    33   0%
                              c-beginning-of-current-token                 11   0%
                              c-backward-sws                        3   0%
                          - c-backward-token-2                    148   0%
                           - c-backward-sws                        65   0%
                              c-beginning-of-current-token                 16   0%
                            - c-beginning-of-macro                  3   0%
                               c-backward-single-comment                  3   0%
                             c-beginning-of-current-token                  9   0%
                          - c-parse-state                         141   0%
                           - c-parse-state-1                      124   0%
                            - c-append-to-state-cache                 45   0%
                             - c-beginning-of-macro                 12   0%
                                back-to-indentation                  3   0%
                                #<compiled 0x23c57d3a18592c3>                  1   0%
                               c-append-lower-brace-pair-to-state-cache                  5   0%
                            - c-remove-stale-state-cache                 42   0%
                             - c-beginning-of-macro                 18   0%
                                back-to-indentation                  7   0%
                            - c-parse-state-get-strategy                 25   0%
                             - c-get-fallback-scan-pos                 19   0%
                              - beginning-of-defun                 19   0%
                               - beginning-of-defun-raw                 19   0%
                                  syntax-ppss                      19   0%
                             - c-beginning-of-macro                  4   0%
                                back-to-indentation                  1   0%
                           - c-beginning-of-macro                  10   0%
                              back-to-indentation                   6   0%
                             c-syntactic-end-of-macro                  1   0%
                          - c-backward-sws                         61   0%
                           - c-beginning-of-macro                  15   0%
                              back-to-indentation                   3   0%
                              c-backward-single-comment                  2   0%
                              #<compiled 0x23c57d3a18592c3>                  1   0%
                             c-beginning-of-current-token                  8   0%
                         - c-forward-label                        344   1%
                          - c-syntactic-re-search-forward                120   0%
                           - c-beginning-of-macro                  73   0%
                              back-to-indentation                  16   0%
                              c-backward-single-comment                  1   0%
                              #<compiled 0x23c57d3a18592c3>                  1   0%
                          - c-after-conditional                    47   0%
                           - c-backward-token-2                    34   0%
                            - c-backward-sws                       19   0%
                             - c-beginning-of-macro                  6   0%
                                back-to-indentation                  2   0%
                               c-beginning-of-current-token                  2   0%
                            c-beginning-of-current-token                 25   0%
                            c-forward-sws                          23   0%
                         - c-font-lock-single-decl                171   0%
                          - c-font-lock-declarators                145   0%
                           - c-do-declarators                     140   0%
                            - c-forward-declarator                 92   0%
                             - c-syntactic-re-search-forward                 32   0%
                              - c-beginning-of-macro                 17   0%
                                 back-to-indentation                  1   0%
                             - c-backward-sws                      13   0%
                                c-beginning-of-current-token                  5   0%
                             - c-forward-name                       9   0%
                                c-forward-sws                       4   0%
                            - c-forward-token-2                    12   0%
                             - c-forward-over-token-and-ws                  7   0%
                              - c-forward-over-token                  6   0%
                                 c-forward-sws                      1   0%
                                c-forward-sws                       1   0%
                               c-forward-sws                        3   0%
                            - c-syntactic-re-search-forward                 10   0%
                             - c-beginning-of-macro                  7   0%
                                back-to-indentation                  1   0%
                              c-forward-sws                         6   0%
                              #<compiled 0x1d28695b84f15d4b>                  3   0%
                          - c-backward-sws                         14   0%
                             c-beginning-of-current-token                  2   0%
                             c-beginning-of-macro                   2   0%
                          - c-determine-limit                       2   0%
                             c-determine-limit                      1   0%
                            c-fontify-recorded-types-and-refs                  1   0%
                         - c-backward-sws                         129   0%
                          - c-beginning-of-macro                   34   0%
                             back-to-indentation                   12   0%
                             #<compiled 0x23c57d3a18592c3>                  2   0%
                             c-backward-single-comment                  1   0%
                         - c-backward-token-2                      87   0%
                            c-beginning-of-current-token                 26   0%
                            c-backward-sws                         22   0%
                         - c-syntactic-re-search-forward                  1   0%
                            c-beginning-of-macro                    1   0%
                        - c-bs-at-toplevel-p                     1381   6%
                         - c-brace-stack-at                      1306   6%
                          - c-update-brace-stack                 1223   5%
                           - c-syntactic-re-search-forward                888   4%
                            - c-beginning-of-macro                304   1%
                               back-to-indentation                 95   0%
                               #<compiled 0x23c57d3a18592c3>                 13   0%
                               #<compiled 0x23c57d3a18592c3>                  8   0%
                              c-end-of-macro                        2   0%
                              #<compiled 0x23c57d3a18592c3>                  2   0%
                             c-beginning-of-current-token                134   0%
                             match-string-no-properties                  8   0%
                        - c-beginning-of-macro                    183   0%
                           back-to-indentation                     45   0%
                           c-backward-single-comment                 15   0%
                           #<compiled 0x23c57d3a18592c3>                  6   0%
                           #<compiled 0x23c57d3a18592c3>                  2   0%
                        - c-forward-sws                            57   0%
                           c-forward-single-comment                  4   0%
                           c-beginning-of-macro                     3   0%
                        - c-backward-sws                           17   0%
                         - c-beginning-of-macro                     8   0%
                            back-to-indentation                     5   0%
                            #<compiled 0x23c57d3a18592c3>                  1   0%
                          c-beginning-of-current-token                  5   0%
                          c-end-of-macro                            2   0%
                      - c-font-lock-cut-off-declarators                850   4%
                       - c-back-over-member-initializers                289   1%
                        - c-parse-state                           126   0%
                         - c-parse-state-1                        103   0%
                          - c-remove-stale-state-cache                 36   0%
                           - c-beginning-of-macro                  23   0%
                              c-backward-single-comment                  9   0%
                              back-to-indentation                   2   0%
                          - c-append-to-state-cache                 30   0%
                           - c-beginning-of-macro                  15   0%
                              c-backward-single-comment                  7   0%
                              back-to-indentation                   4   0%
                          - c-parse-state-get-strategy                 25   0%
                           - c-beginning-of-macro                  22   0%
                              c-backward-single-comment                 11   0%
                              back-to-indentation                   4   0%
                         - c-beginning-of-macro                    20   0%
                            c-backward-single-comment                 10   0%
                            back-to-indentation                     3   0%
                        - c-backward-sws                           79   0%
                         - c-beginning-of-macro                    27   0%
                            back-to-indentation                     7   0%
                            #<compiled 0x23c57d3a18592c3>                  1   0%
                           c-beginning-of-current-token                  1   0%
                        - c-back-over-compound-identifier                 18   0%
                           c-on-identifier                         15   0%
                        - c-just-after-func-arglist-p                 15   0%
                         - c-beginning-of-statement-1                 10   0%
                          - c-at-macro-vsemi-p                      3   0%
                             c-backward-sws                         1   0%
                          - c-crosses-statement-barrier-p                  2   0%
                             c-literal-limits                       1   0%
                          - c-beginning-of-macro                    2   0%
                             back-to-indentation                    1   0%
                            c-backward-sws                          1   0%
                         - c-forward-decl-or-cast-1                  4   0%
                            c-forward-type                          1   0%
                       - c-determine-limit                        263   1%
                        - c-semi-pp-to-literal                     54   0%
                         - c-semi-get-near-cache-entry                  3   0%
                            copy-tree                               1   0%
                        - c-determine-limit                        52   0%
                         - c-semi-pp-to-literal                    12   0%
                          - c-semi-get-near-cache-entry                  2   0%
                             copy-tree                              1   0%
                            c-semi-put-near-cache-entry                  1   0%
                           c-backward-sws                           2   0%
                        - c-backward-sws                           20   0%
                         - c-beginning-of-macro                     9   0%
                            back-to-indentation                     3   0%
                       - c-parse-state                             80   0%
                        - c-parse-state-1                          80   0%
                         - c-append-lower-brace-pair-to-state-cache                 38   0%
                            c-beginning-of-macro                    1   0%
                         - c-remove-stale-state-cache-backwards                 35   0%
                          - c-state-literal-at                     29   0%
                             c-state-pp-to-literal                 17   0%
                           - c-state-safe-place                     9   0%
                              c-state-pp-to-literal                  7   0%
                            - c-beginning-of-macro                  1   0%
                               c-backward-single-comment                  1   0%
                            c-beginning-of-macro                    1   0%
                            c-state-balance-parens-backwards                  1   0%
                         - c-append-to-state-cache                  2   0%
                          - c-beginning-of-macro                    2   0%
                             back-to-indentation                    1   0%
                         - c-parse-state-get-strategy                  2   0%
                          - c-beginning-of-macro                    2   0%
                             back-to-indentation                    1   0%
                         - c-remove-stale-state-cache                  1   0%
                          - c-beginning-of-macro                    1   0%
                             back-to-indentation                    1   0%
                       - c-syntactic-skip-backward                 61   0%
                        - c-backward-sws                           17   0%
                         - c-beginning-of-macro                     6   0%
                            back-to-indentation                     2   0%
                            #<compiled 0x23c57d3a18592c3>                  1   0%
                        - c-literal-start                          11   0%
                         - c-semi-pp-to-literal                     9   0%
                            c-semi-get-near-cache-entry                  1   0%
                        - c-beginning-of-macro                     10   0%
                           back-to-indentation                      3   0%
                       - c-at-toplevel-p                           30   0%
                        - c-search-uplist-for-classkey                 16   0%
                         - c-looking-at-decl-block                 15   0%
                          - c-syntactic-skip-backward                  9   0%
                           - c-literal-start                        3   0%
                              c-semi-pp-to-literal                  3   0%
                           - c-backward-sws                         2   0%
                            - c-beginning-of-macro                  2   0%
                               back-to-indentation                  1   0%
                            c-syntactic-re-search-forward                  1   0%
                          - c-backward-sws                          1   0%
                             c-beginning-of-current-token                  1   0%
                        - c-parse-state                            12   0%
                         - c-parse-state-1                         12   0%
                          - c-remove-stale-state-cache                  4   0%
                             c-beginning-of-macro                   2   0%
                          - c-append-to-state-cache                  4   0%
                             c-beginning-of-macro                   1   0%
                          - c-parse-state-get-strategy                  3   0%
                           - c-beginning-of-macro                   2   0%
                              back-to-indentation                   1   0%
                       - c-forward-decl-or-cast-1                  22   0%
                        - c-forward-type                           13   0%
                           c-forward-name                           3   0%
                         - c-check-qualified-type                   1   0%
                          - c-forward-over-compound-identifier                  1   0%
                             c-forward-sws                          1   0%
                        - c-forward-keyword-clause                  1   0%
                           c-forward-sws                            1   0%
                        - c-backward-token-2                        1   0%
                           c-beginning-of-current-token                  1   0%
                       - c-forward-sws                              7   0%
                          c-forward-single-comment                  3   0%
                       - c-font-lock-single-decl                    7   0%
                        - c-font-lock-declarators                   5   0%
                         - c-do-declarators                         5   0%
                          - c-forward-declarator                    4   0%
                           - c-syntactic-re-search-forward                  3   0%
                              c-beginning-of-macro                  1   0%
                             c-backward-sws                         1   0%
                        - c-backward-sws                            2   0%
                           c-beginning-of-macro                     2   0%
                       - c-get-fontification-context                  6   0%
                        - c-inside-bracelist-p                      3   0%
                         - c-looking-at-or-maybe-in-bracelist                  2   0%
                          - c-backward-token-2                      1   0%
                             c-beginning-of-current-token                  1   0%
                        - c-parse-state                             3   0%
                         - c-parse-state-1                          2   0%
                          - c-remove-stale-state-cache                  1   0%
                           - c-beginning-of-macro                   1   0%
                              back-to-indentation                   1   0%
                          - c-parse-state-get-strategy                  1   0%
                           - c-beginning-of-macro                   1   0%
                              back-to-indentation                   1   0%
                           c-beginning-of-macro                     1   0%
                         c-skip-comments-and-strings                  2   0%
                      - c-font-lock-enclosing-decls                684   3%
                       - c-parse-state                            290   1%
                        - c-parse-state-1                         259   1%
                         - c-remove-stale-state-cache-backwards                 72   0%
                          - c-state-literal-at                     40   0%
                           - c-state-safe-place                    23   0%
                              c-state-pp-to-literal                 16   0%
                            - c-beginning-of-macro                  7   0%
                               c-backward-single-comment                  3   0%
                               back-to-indentation                  1   0%
                               #<compiled 0x23c57d3a18592c3>                  1   0%
                             c-state-pp-to-literal                 16   0%
                          - c-beginning-of-macro                    9   0%
                             c-backward-single-comment                  7   0%
                             back-to-indentation                    2   0%
                            c-state-balance-parens-backwards                  5   0%
                         - c-append-lower-brace-pair-to-state-cache                 66   0%
                          - c-beginning-of-macro                    9   0%
                             back-to-indentation                    3   0%
                             c-backward-single-comment                  1   0%
                             #<compiled 0x23c57d3a18592c3>                  1   0%
                         - c-append-to-state-cache                 58   0%
                          - c-beginning-of-macro                   15   0%
                             c-backward-single-comment                  5   0%
                             back-to-indentation                    5   0%
                         - c-parse-state-get-strategy                 24   0%
                          - c-beginning-of-macro                   19   0%
                             c-backward-single-comment                 10   0%
                             back-to-indentation                    2   0%
                             #<compiled 0x23c57d3a18592c3>                  1   0%
                         - c-remove-stale-state-cache                 19   0%
                          - c-beginning-of-macro                   14   0%
                             back-to-indentation                    3   0%
                             c-backward-single-comment                  3   0%
                        - c-beginning-of-macro                     28   0%
                           c-backward-single-comment                 12   0%
                           back-to-indentation                      6   0%
                           #<compiled 0x23c57d3a18592c3>                  1   0%
                           #<compiled 0x23c57d3a18592c3>                  1   0%
                       - c-determine-limit                        195   0%
                        - c-determine-limit                        42   0%
                           c-semi-pp-to-literal                     3   0%
                         - c-backward-sws                           2   0%
                            c-beginning-of-macro                    1   0%
                        - c-backward-sws                           19   0%
                         - c-beginning-of-macro                     4   0%
                            back-to-indentation                     1   0%
                        - c-semi-pp-to-literal                     13   0%
                           c-semi-get-near-cache-entry                  3   0%
                       - c-syntactic-skip-backward                150   0%
                        - c-literal-start                          51   0%
                         - c-semi-pp-to-literal                    50   0%
                          - c-semi-get-near-cache-entry                  3   0%
                             copy-tree                              1   0%
                            c-parse-ps-state-below                  2   0%
                        - c-backward-sws                           45   0%
                         - c-beginning-of-macro                    21   0%
                            back-to-indentation                     7   0%
                            #<compiled 0x23c57d3a18592c3>                  1   0%
                        - c-beginning-of-macro                     25   0%
                           back-to-indentation                      8   0%
                           c-macro-is-genuine-p                     1   0%
                       - c-forward-sws                              9   0%
                          c-forward-single-comment                  3   0%
                         c-skip-comments-and-strings                  2   0%
                      - c-font-lock-complex-decl-prepare                323   1%
                       - c-parse-state                            227   1%
                        - c-parse-state-1                         192   0%
                         - c-append-to-state-cache                 96   0%
                          - c-beginning-of-macro                   30   0%
                             back-to-indentation                    9   0%
                             c-backward-single-comment                  7   0%
                             #<compiled 0x23c57d3a18592c3>                  1   0%
                            c-append-lower-brace-pair-to-state-cache                  8   0%
                         - c-remove-stale-state-cache                 54   0%
                          - c-beginning-of-macro                   23   0%
                             c-backward-single-comment                 11   0%
                             back-to-indentation                    3   0%
                             #<compiled 0x23c57d3a18592c3>                  2   0%
                         - c-parse-state-get-strategy                 26   0%
                          - c-beginning-of-macro                   22   0%
                             c-backward-single-comment                 16   0%
                             back-to-indentation                    1   0%
                        - c-beginning-of-macro                     24   0%
                           c-backward-single-comment                 15   0%
                           back-to-indentation                      2   0%
                          c-syntactic-end-of-macro                  1   0%
                       - c-backward-sws                            55   0%
                        - c-beginning-of-macro                     21   0%
                           back-to-indentation                      5   0%
                           c-backward-single-comment                  1   0%
                           #<compiled 0x23c57d3a18592c3>                  1   0%
                       - c-beginning-of-macro                      13   0%
                          c-backward-single-comment                  7   0%
                          back-to-indentation                       1   0%
                      - c-font-lock-enum-tail                     197   0%
                       - c-parse-state                            138   0%
                        - c-parse-state-1                         106   0%
                         - c-remove-stale-state-cache                 39   0%
                          - c-beginning-of-macro                   32   0%
                             c-backward-single-comment                 13   0%
                             back-to-indentation                    7   0%
                             #<compiled 0x23c57d3a18592c3>                  1   0%
                         - c-append-to-state-cache                 36   0%
                          - c-beginning-of-macro                   25   0%
                             c-backward-single-comment                 18   0%
                             back-to-indentation                    3   0%
                         - c-parse-state-get-strategy                 17   0%
                          - c-beginning-of-macro                   14   0%
                             c-backward-single-comment                  6   0%
                             back-to-indentation                    1   0%
                        - c-beginning-of-macro                     24   0%
                           c-backward-single-comment                 16   0%
                           back-to-indentation                      4   0%
                          c-syntactic-end-of-macro                  1   0%
                       - c-backward-over-enum-header                 51   0%
                        - c-backward-token-2                       32   0%
                         - c-backward-sws                          21   0%
                          - c-beginning-of-macro                    9   0%
                             c-backward-single-comment                  2   0%
                             #<compiled 0x23c57d3a18592c3>                  1   0%
                             back-to-indentation                    1   0%
                            c-beginning-of-current-token                  2   0%
                           c-beginning-of-current-token                  2   0%
                       - c-font-lock-declarators                    2   0%
                        - c-do-declarators                          1   0%
                         - c-forward-declarator                     1   0%
                            c-backward-sws                          1   0%
                         c-skip-comments-and-strings                  1   0%
                        #<compiled 0x1f44fcdd532b998a>                115   0%
                        #<compiled 0x5a4eb366ca182a2>                108   0%
                        #<compiled 0x1f26ace3adcce57>                 95   0%
                        #<compiled 0x9ffadae15e67902>                 94   0%
                      - #<compiled -0xad509fc1897b8c2>                 85   0%
                         c-skip-comments-and-strings                  1   0%
                      - c-font-lock-invalid-single-quotes                 82   0%
                       - c-literal-limits                          49   0%
                        - c-full-pp-to-literal                     41   0%
                           c-parse-ps-state-below                   2   0%
                           c-full-put-near-cache-entry                  1   0%
                           c-full-get-near-cache-entry                  1   0%
                      - #<compiled -0x10dce36f6d153b2c>                 36   0%
                       - c-font-lock-doc-comments                  33   0%
                        - c-literal-start                          21   0%
                         - c-semi-pp-to-literal                    20   0%
                          - c-semi-put-near-cache-entry                  1   0%
                             last                                   1   0%
                            #<compiled 0x23c57d3a18592c3>                  1   0%
                            c-semi-get-near-cache-entry                  1   0%
                            c-parse-ps-state-below                  1   0%
                        #<compiled 0x18bb7f98a01ee776>                 16   0%
                      - c-font-lock-enum-body                      10   0%
                         c-backward-over-enum-header                  2   0%
                       - c-font-lock-declarators                    1   0%
                        - c-do-declarators                          1   0%
                           c-forward-declarator                     1   0%
                      - c-font-lock-c++-using                       4   0%
                         c-syntactic-re-search-forward                  4   0%
                     - font-lock-fontify-syntactically-region                133   0%
                        syntax-ppss                                74   0%
                        looking-back                                5   0%
                     - font-lock-unfontify-region                   7   0%
                        font-lock-default-unfontify-region                  3   0%
                       font-lock-extend-region-multiline                  1   0%
                    - c-before-context-fl-expand-region                406   1%
                     - mapc                                       406   1%
                      - #<compiled -0x128d3c5abfa33faf>                406   1%
                       - c-context-expand-fl-region                402   1%
                        - c-fl-decl-start                         287   1%
                         - c-determine-limit                      124   0%
                          - c-semi-pp-to-literal                   32   0%
                             c-parse-ps-state-below                  4   0%
                             c-semi-get-near-cache-entry                  2   0%
                          - c-determine-limit                      29   0%
                             c-semi-pp-to-literal                  10   0%
                             c-backward-sws                         1   0%
                          - c-backward-sws                         16   0%
                             c-beginning-of-macro                   6   0%
                         - c-syntactic-skip-backward                 52   0%
                          - c-backward-sws                         14   0%
                           - c-beginning-of-macro                   5   0%
                              back-to-indentation                   3   0%
                          - c-beginning-of-macro                   12   0%
                             back-to-indentation                    7   0%
                          - c-literal-start                        10   0%
                           - c-semi-pp-to-literal                   9   0%
                              c-semi-get-near-cache-entry                  1   0%
                         - c-literal-start                         30   0%
                          - c-semi-pp-to-literal                   24   0%
                             c-semi-get-near-cache-entry                  2   0%
                             c-parse-ps-state-below                  1   0%
                         - c-parse-state                           18   0%
                          - c-parse-state-1                        17   0%
                           - c-append-to-state-cache                 10   0%
                            - c-beginning-of-macro                  3   0%
                               back-to-indentation                  1   0%
                             c-append-lower-brace-pair-to-state-cache                  3   0%
                           - c-remove-stale-state-cache                  3   0%
                            - c-beginning-of-macro                  3   0%
                               back-to-indentation                  1   0%
                             c-parse-state-get-strategy                  1   0%
                            c-beginning-of-macro                    1   0%
                         - c-forward-type                          14   0%
                          - c-check-qualified-type                  4   0%
                           - c-forward-over-compound-identifier                  3   0%
                            - c-forward-over-token                  3   0%
                               c-forward-sws                        1   0%
                            c-forward-name                          4   0%
                         - c-cheap-inside-bracelist-p                 12   0%
                          - c-backward-sws                          6   0%
                             c-beginning-of-macro                   1   0%
                          - c-backward-token-2                      4   0%
                             c-backward-sws                         2   0%
                         - c-forward-sws                            7   0%
                            c-forward-single-comment                  1   0%
                            c-beginning-of-macro                    1   0%
                         - c-looking-at-or-maybe-in-bracelist                  6   0%
                            c-backward-token-2                      4   0%
                            c-backward-sws                          1   0%
                         - c-backward-sws                           3   0%
                          - c-beginning-of-macro                    2   0%
                             back-to-indentation                    1   0%
                        - c-fl-decl-end                           108   0%
                         - c-literal-start                         53   0%
                          - c-semi-pp-to-literal                   42   0%
                             c-parse-ps-state-below                 17   0%
                           - c-semi-get-near-cache-entry                  2   0%
                              copy-tree                             1   0%
                           - c-semi-put-near-cache-entry                  1   0%
                              last                                  1   0%
                         - c-forward-declarator                    34   0%
                          - c-syntactic-re-search-forward                 11   0%
                             c-beginning-of-macro                   3   0%
                            c-forward-name                          4   0%
                            c-backward-sws                          3   0%
                           c-on-identifier                          9   0%
                         - c-backward-sws                           7   0%
                          - c-beginning-of-macro                    3   0%
                             back-to-indentation                    3   0%
                         - c-beginning-of-macro                     2   0%
                            back-to-indentation                     1   0%
                  - bug-reference-fontify                          10   0%
                     syntax-ppss                                    1   0%
               - run-with-timer                                    27   0%
                - apply                                            27   0%
                 - run-at-time                                     27   0%
                    timer-relative-time                            16   0%
                  - timer-activate                                  7   0%
                   - timer--activate                                5   0%
                      timer--time-less-p                            5   0%
                  - timer-set-function                              1   0%
                     timerp                                         1   0%
                  - timer-set-time                                  1   0%
                     timer--time-setter                             1   0%
                 #<compiled 0x1e5217478517c3>                       1   0%
             - tool-bar-make-keymap                               526   2%
              - tool-bar-make-keymap-1                            520   2%
               - mapcar                                           520   2%
                - #<compiled -0xe93f44be779c5e6>                  514   2%
                 - eval                                            92   0%
                  - find-image                                     91   0%
                     image-search-load-path                        87   0%
                   - cond                                           2   0%
                    - <                                             2   0%
                       display-color-cells                          1   0%
                   display-images-p                                 2   0%
             - funcall                                            141   0%
              - #<compiled -0xe6e130d2625df54>                    141   0%
               - gui-backend-selection-exists-p                   139   0%
                - apply                                           138   0%
                   #<compiled 0x614156afd37b4b5>                  138   0%
             - eval                                                25   0%
              - if                                                 16   0%
                 display-graphic-p                                  1   0%
                mode-line-eol-desc                                  2   0%
               file-remote-p                                       11   0%
               menu-bar-update-buffers                              9   0%
             - mode-line-default-help-echo                          6   0%
              - window-at-side-p                                    2   0%
                 window-pixel-edges                                 2   0%
               kill-this-buffer-enabled-p                           5   0%
               keymap-canonicalize                                  4   0%
             - #<compiled 0x6984eea25a6502>                         3   0%
              - apply                                               3   0%
                 redisplay--pre-redisplay-functions                  3   0%
               menu-bar-non-minibuffer-window-p                     2   0%
           - input-pending-p                                        9   0%
            - timer-event-handler                                   8   0%
             - apply                                                5   0%
                jit-lock-force-redisplay                            4   0%
          - if                                                    624   2%
           - scroll-up                                             16   0%
            - eval                                                 11   0%
               if                                                   7   0%
               mode-line-eol-desc                                   1   0%
              file-remote-p                                         5   0%
   - execute-extended-command                                      14   0%
    - sit-for                                                      10   0%
     - redisplay                                                    9   0%
      - redisplay_internal (C function)                             2   0%
       - tool-bar-make-keymap                                       1   0%
        - tool-bar-make-keymap-1                                    1   0%
         - mapcar                                                   1   0%
          - #<compiled -0xe93f44be779c5e6>                          1   0%
           - eval                                                   1   0%
            - find-image                                            1   0%
               image-search-load-path                               1   0%
       - funcall                                                    1   0%
        - #<compiled -0xe6e130d2625df54>                            1   0%
         - gui-backend-selection-exists-p                           1   0%
          - apply                                                   1   0%
             #<compiled 0x614156afd37b4b5>                          1   0%
    - command-execute                                               2   0%
     - call-interactively                                           2   0%
      - funcall-interactively                                       2   0%
         profiler-report                                            2   0%
   - completion-at-point                                            5   0%
    - completion-in-region                                          5   0%
     - completion--in-region                                        5   0%
      - #<compiled -0x1e2d9328e9a98d2b>                             5   0%
       - apply                                                      5   0%
        - #<compiled 0x100fbad10eb29f7b>                            5   0%
         - completion--in-region-1                                  5   0%
          - completion--do-completion                               5   0%
           - completion-try-completion                              5   0%
            - completion--nth-completion                            5   0%
             - completion--some                                     5   0%
              - #<compiled 0x977ab4dbe93b928>                       5   0%
                 completion-basic-try-completion                    5   0%
  - byte-code                                                      79   0%
   - read--expression                                              41   0%
    - read-from-minibuffer                                         29   0%
     - timer-event-handler                                          1   0%
      - apply                                                       1   0%
       - #<compiled -0x6d03fdbd03d80e6>                             1   0%
        - eldoc-print-current-symbol-info                           1   0%
         - eldoc--invoke-strategy                                   1   0%
          - eldoc-documentation-default                             1   0%
           - run-hook-with-args-until-success                       1   0%
            - elisp-eldoc-funcall                                   1   0%
             - #<compiled 0x130eb44d65218e6c>                       1   0%
              - #<compiled 0x11c5a46295b8d14d>                      1   0%
               - run-hook-with-args                                 1   0%
                  eldoc-display-in-buffer                           1   0%
   - read-extended-command                                         38   0%
    - completing-read                                              38   0%
     - completing-read-default                                     38   0%
      - read-from-minibuffer                                       29   0%
       - command-execute                                           16   0%
        - call-interactively                                       16   0%
         - funcall-interactively                                   16   0%
          - minibuffer-complete                                    11   0%
           - completion-in-region                                  11   0%
            - completion--in-region                                11   0%
             - #<compiled -0x1e2d9328e9a98d2b>                     11   0%
              - apply                                              11   0%
               - #<compiled 0x100fbad10eb29f7b>                    11   0%
                - completion--in-region-1                          11   0%
                 - completion--do-completion                       11   0%
                  - completion-try-completion                      10   0%
                   - completion--nth-completion                    10   0%
                    - completion--some                             10   0%
                     - #<compiled 0x193600b6f97a3601>                 10   0%
                      - completion-basic-try-completion                 10   0%
                       - try-completion                            10   0%
                        - #<compiled -0x12fd8b2a7ff76cc4>                 10   0%
                           complete-with-action                    10   0%
                    completion--replace                             1   0%
          - self-insert-command                                     2   0%
             electric-indent-post-self-insert-function                  1   0%
            minibuffer-complete-and-exit                            1   0%
       - timer-event-handler                                        2   0%
        - apply                                                     2   0%
           #<compiled 0x23b7d44d04e521>                             1   0%
         - blink-cursor-start                                       1   0%
          - blink-cursor--start-timer                               1   0%
           - run-with-timer                                         1   0%
            - apply                                                 1   0%
             - run-at-time                                          1   0%
              - timer-activate                                      1   0%
                 timer--activate                                    1   0%
- ...                                                            8576  40%
   Automatic GC                                                  8576  40%

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

* Re: The Emacs master is much slower than the emacs-27 branch.
  2020-12-04 12:54         ` Stephen Berman
@ 2020-12-04 13:28           ` Eli Zaretskii
  2020-12-04 13:53             ` Stephen Berman
  0 siblings, 1 reply; 74+ messages in thread
From: Eli Zaretskii @ 2020-12-04 13:28 UTC (permalink / raw)
  To: Stephen Berman; +Cc: acm, emacs-devel

> From: Stephen Berman <stephen.berman@gmx.net>
> Cc: acm@muc.de,  emacs-devel@gnu.org
> Date: Fri, 04 Dec 2020 13:54:06 +0100
> 
> >> As noted above, I build both master and emacs-27 with CFLAGS='-Og -g3'.
> >> Given that, is such a difference still expected?
> >
> > No.  But if you see this consistently, please produce and post the
> > profile of each of the versions, and let's take it from there.
> 
> Since the builds I ran the benchmark on were about two weeks old, I
> updated both branches now, rebuilt and ran the benchmark again, and got
> the same results: ~21 seconds on master, ~61 seconds on emacs-27.
> Profiles attached.

Thanks.  It looks like everything is just two to 3 times slower in
Emacs 28 on your system, which is definitely not my experience.

Are you sure all the Lisp files are byte-compiled?  What happens if
you "make bootstrap" in both branches, and then try again?



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

* Re: The Emacs master is much slower than the emacs-27 branch.
  2020-12-04 13:28           ` Eli Zaretskii
@ 2020-12-04 13:53             ` Stephen Berman
  2020-12-04 14:05               ` Stephen Berman
  0 siblings, 1 reply; 74+ messages in thread
From: Stephen Berman @ 2020-12-04 13:53 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: acm, emacs-devel

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

On Fri, 04 Dec 2020 15:28:06 +0200 Eli Zaretskii <eliz@gnu.org> wrote:

>> From: Stephen Berman <stephen.berman@gmx.net>
>> Cc: acm@muc.de,  emacs-devel@gnu.org
>> Date: Fri, 04 Dec 2020 13:54:06 +0100
>>
>> >> As noted above, I build both master and emacs-27 with CFLAGS='-Og -g3'.
>> >> Given that, is such a difference still expected?
>> >
>> > No.  But if you see this consistently, please produce and post the
>> > profile of each of the versions, and let's take it from there.
>>
>> Since the builds I ran the benchmark on were about two weeks old, I
>> updated both branches now, rebuilt and ran the benchmark again, and got
>> the same results: ~21 seconds on master, ~61 seconds on emacs-27.
>> Profiles attached.
>
> Thanks.  It looks like everything is just two to 3 times slower in
> Emacs 28 on your system, which is definitely not my experience.
        ^^
        27

> Are you sure all the Lisp files are byte-compiled?  What happens if
> you "make bootstrap" in both branches, and then try again?

I just rebuilt emacs-27 with "make bootstrap", reran the benchmark, and
it took ~60 seconds, about a second faster than the previous
non-bootstrapped build.  The profile is similar to the previous one from
emacs-27, but I've attached for your perusal anyway.  I'll bootstrap
master too and run the benchmark there again.

Steve Berman


[-- Attachment #2: profile-27-bootstrap --]
[-- Type: application/octet-stream, Size: 77157 bytes --]

- command-execute                                               46749  76%
 - call-interactively                                           46749  76%
  - funcall-interactively                                       46605  76%
   - eval-expression                                            46587  76%
    - eval                                                      46587  76%
     - time-scroll                                              46587  76%
      - message                                                 46587  76%
       - let                                                    46587  76%
        - condition-case                                        46587  76%
         - while                                                46586  76%
          - sit-for                                             44195  72%
           - redisplay                                          44096  72%
            - redisplay_internal (C function)                   40860  67%
             - jit-lock-function                                40282  66%
              - jit-lock-fontify-now                            40246  66%
               - jit-lock--run-functions                        40172  66%
                - run-hook-wrapped                              40165  66%
                 - #<compiled 0xa00ec9>                         40162  66%
                  - font-lock-fontify-region                    40038  65%
                   - c-font-lock-fontify-region                 39985  65%
                    - font-lock-default-fontify-region              37620  61%
                     - font-lock-fontify-keywords-region              36524  60%
                      - c-font-lock-declarations                20660  34%
                       - c-find-decl-spots                      20384  33%
                        - #<compiled 0x651669>                  12733  20%
                         - c-forward-decl-or-cast-1               4989   8%
                          - c-forward-type                       2893   4%
                           - c-check-qualified-type                701   1%
                            - c-forward-over-compound-identifier                661   1%
                             - c-forward-over-token                279   0%
                                c-forward-sws                     135   0%
                               c-on-identifier                    166   0%
                               c-forward-sws                      135   0%
                           - c-forward-name                       675   1%
                            - c-forward-sws                       247   0%
                             - c-beginning-of-macro                  2   0%
                                c-backward-single-comment                  1   0%
                           - c-add-type                            40   0%
                            - c-syntactic-content                  32   0%
                               c-forward-sws                        7   0%
                             c-forward-sws                         33   0%
                           - c-forward-keyword-clause                 32   0%
                              c-forward-sws                        12   0%
                             #<compiled 0x6ab17d>                   5   0%
                             #<compiled 0x6ab141>                   5   0%
                             #<compiled 0x6ab169>                   3   0%
                             #<compiled 0x6ab155>                   1   0%
                          - c-backward-token-2                    389   0%
                             c-beginning-of-current-token                123   0%
                             c-backward-sws                       100   0%
                            c-forward-sws                         166   0%
                          - c-directly-in-class-called-p                112   0%
                           - c-parse-state                         88   0%
                            - c-parse-state-1                      76   0%
                             - c-append-to-state-cache                 33   0%
                              - c-beginning-of-macro                 10   0%
                                 back-to-indentation                  4   0%
                                 #<compiled 0x6ff9f1>                  1   0%
                             - c-remove-stale-state-cache                 31   0%
                              - c-beginning-of-macro                 15   0%
                                 back-to-indentation                  6   0%
                             - c-parse-state-get-strategy                  9   0%
                              - c-beginning-of-macro                  9   0%
                                 back-to-indentation                  3   0%
                                 #<compiled 0x6ff9e5>                  2   0%
                            - c-beginning-of-macro                 10   0%
                               back-to-indentation                  4   0%
                               c-backward-single-comment                  1   0%
                           - c-looking-at-decl-block                 22   0%
                            - c-syntactic-skip-backward                 12   0%
                             - c-backward-sws                       7   0%
                              - c-beginning-of-macro                  3   0%
                                 back-to-indentation                  3   0%
                               c-beginning-of-macro                  2   0%
                             - c-literal-start                      1   0%
                                c-semi-pp-to-literal                  1   0%
                            - c-backward-sws                        2   0%
                             - c-beginning-of-macro                  2   0%
                                c-backward-single-comment                  2   0%
                              c-syntactic-re-search-forward                  1   0%
                          - c-forward-name                         90   0%
                             c-forward-sws                         33   0%
                            c-forward-annotation                   46   0%
                          - c-forward-keyword-clause                 19   0%
                             c-forward-sws                          9   0%
                          - c-backward-sws                         16   0%
                             c-beginning-of-current-token                  5   0%
                            #<compiled 0x6a36d9>                    1   0%
                         - c-get-fontification-context               3943   6%
                          - c-inside-bracelist-p                 1186   1%
                           - c-looking-at-or-maybe-in-bracelist                625   1%
                            - c-backward-token-2                  343   0%
                             - c-backward-sws                     179   0%
                              - c-beginning-of-macro                 68   0%
                                 back-to-indentation                 21   0%
                                 c-backward-single-comment                  6   0%
                                 #<compiled 0x6ff9e5>                  1   0%
                                c-beginning-of-current-token                 10   0%
                               c-beginning-of-current-token                  6   0%
                            - c-backward-sws                      187   0%
                             - c-beginning-of-macro                 70   0%
                                back-to-indentation                 32   0%
                                c-backward-single-comment                  8   0%
                                #<compiled 0x6ff9e5>                  2   0%
                                #<compiled 0x6ff9f1>                  1   0%
                               c-beginning-of-current-token                  9   0%
                               c-backward-single-comment                  1   0%
                            - c-beginning-of-statement-1                  4   0%
                             - c-backward-sws                       2   0%
                                c-beginning-of-macro                  1   0%
                               c-crosses-statement-barrier-p                  1   0%
                              c-forward-to-cpp-define-body                  2   0%
                           - c-looking-at-inexpr-block                276   0%
                            - c-backward-sws                      119   0%
                             - c-beginning-of-macro                 47   0%
                                back-to-indentation                 14   0%
                                c-backward-single-comment                 11   0%
                               c-beginning-of-current-token                  8   0%
                           - c-backward-over-enum-header                256   0%
                            - c-backward-token-2                  159   0%
                             - c-backward-sws                     101   0%
                              - c-beginning-of-macro                 36   0%
                                 back-to-indentation                 11   0%
                                 c-backward-single-comment                  7   0%
                                c-beginning-of-current-token                  5   0%
                               c-beginning-of-current-token                 10   0%
                              c-on-identifier                       1   0%
                          - c-parse-state                         735   1%
                           - c-parse-state-1                      681   1%
                            - c-append-to-state-cache                268   0%
                             - c-beginning-of-macro                 62   0%
                                back-to-indentation                 22   0%
                                #<compiled 0x6ff9f1>                  1   0%
                                #<compiled 0x6ff9e5>                  1   0%
                             - c-append-lower-brace-pair-to-state-cache                 46   0%
                                c-beginning-of-macro                  1   0%
                            - c-parse-state-get-strategy                196   0%
                             - c-get-fallback-scan-pos                156   0%
                              - beginning-of-defun                156   0%
                               - beginning-of-defun-raw                156   0%
                                  syntax-ppss                     156   0%
                             - c-beginning-of-macro                 33   0%
                                back-to-indentation                  8   0%
                                #<compiled 0x6ff9f1>                  1   0%
                            - c-remove-stale-state-cache                187   0%
                             - c-beginning-of-macro                 63   0%
                                back-to-indentation                 25   0%
                                #<compiled 0x6ff9e5>                  3   0%
                                c-backward-single-comment                  1   0%
                                #<compiled 0x6ff9f1>                  1   0%
                               c-end-of-macro                       1   0%
                           - c-beginning-of-macro                  41   0%
                              back-to-indentation                  13   0%
                              #<compiled 0x6ff9f1>                  1   0%
                             c-syntactic-end-of-macro                  2   0%
                             #<compiled 0x922739>                   1   0%
                          - c-back-over-compound-identifier                680   1%
                           - c-backward-sws                       196   0%
                            - c-beginning-of-macro                 60   0%
                               back-to-indentation                 19   0%
                               #<compiled 0x6ff9f1>                  1   0%
                               #<compiled 0x6ff9e5>                  1   0%
                              c-beginning-of-current-token                  2   0%
                           - c-backward-token-2                   160   0%
                              c-beginning-of-current-token                 64   0%
                            - c-backward-sws                       44   0%
                               c-beginning-of-current-token                  1   0%
                             c-on-identifier                      156   0%
                          - c-backward-token-2                    596   0%
                           - c-backward-sws                       275   0%
                              c-beginning-of-current-token                 94   0%
                            - c-beginning-of-macro                 19   0%
                               c-backward-single-comment                 15   0%
                               back-to-indentation                  2   0%
                               #<compiled 0x6ff9e5>                  1   0%
                             c-beginning-of-current-token                 46   0%
                          - c-backward-sws                        318   0%
                           - c-beginning-of-macro                  70   0%
                              c-backward-single-comment                 22   0%
                              back-to-indentation                  21   0%
                              #<compiled 0x6ff9e5>                  1   0%
                             c-beginning-of-current-token                 46   0%
                         - c-forward-label                       1127   1%
                          - c-syntactic-re-search-forward                300   0%
                           - c-beginning-of-macro                 181   0%
                              back-to-indentation                  36   0%
                              #<compiled 0x6ff9f1>                  6   0%
                              #<compiled 0x6ff9e5>                  3   0%
                              c-backward-single-comment                  2   0%
                             #<compiled 0x6f0bf1>                   3   0%
                          - c-after-conditional                   228   0%
                           - c-backward-token-2                   200   0%
                            - c-backward-sws                      117   0%
                             - c-beginning-of-macro                 29   0%
                                back-to-indentation                  9   0%
                               c-beginning-of-current-token                  7   0%
                            c-beginning-of-current-token                164   0%
                          - c-forward-sws                          91   0%
                           - c-beginning-of-macro                   5   0%
                              c-backward-single-comment                  5   0%
                         - c-backward-sws                         651   1%
                          - c-beginning-of-macro                  186   0%
                             back-to-indentation                   57   0%
                             c-backward-single-comment                 18   0%
                             #<compiled 0x6ff9e5>                   4   0%
                             #<compiled 0x6ff9f1>                   1   0%
                         - c-font-lock-single-decl                614   1%
                          - c-font-lock-declarators                465   0%
                           - c-do-declarators                     454   0%
                            - c-forward-declarator                304   0%
                             - c-syntactic-re-search-forward                110   0%
                              - c-beginning-of-macro                 74   0%
                                 back-to-indentation                 20   0%
                                 #<compiled 0x6ff9e5>                  3   0%
                                 #<compiled 0x6ff9f1>                  1   0%
                             - c-backward-sws                      52   0%
                                c-beginning-of-current-token                 13   0%
                              - c-beginning-of-macro                  1   0%
                                 #<compiled 0x6ff9e5>                  1   0%
                             - c-forward-name                      51   0%
                              - c-forward-sws                      16   0%
                                 c-forward-single-comment                  1   0%
                               c-forward-sws                       10   0%
                            - c-syntactic-re-search-forward                 40   0%
                             - c-beginning-of-macro                 17   0%
                                back-to-indentation                  4   0%
                               #<compiled 0x6f0bf1>                  1   0%
                            - c-forward-token-2                    35   0%
                             - c-forward-over-token-and-ws                 25   0%
                              - c-forward-over-token                 20   0%
                                 c-forward-sws                      8   0%
                                c-forward-sws                       4   0%
                               c-forward-sws                        9   0%
                              c-forward-sws                        15   0%
                            - #<compiled 0x671789>                 10   0%
                             - c-forward-type                       1   0%
                              - c-add-type                          1   0%
                               - c-syntactic-content                  1   0%
                                  c-forward-sws                     1   0%
                          - c-backward-sws                         71   0%
                           - c-beginning-of-macro                  17   0%
                              c-backward-single-comment                  7   0%
                              back-to-indentation                   2   0%
                              #<compiled 0x6ff9f1>                  1   0%
                             c-beginning-of-current-token                 16   0%
                          - c-determine-limit                      26   0%
                           - c-backward-sws                         5   0%
                            - c-beginning-of-macro                  2   0%
                               back-to-indentation                  1   0%
                           - c-determine-limit                      5   0%
                              c-semi-pp-to-literal                  1   0%
                             c-semi-pp-to-literal                   3   0%
                            c-fontify-recorded-types-and-refs                 11   0%
                         - c-backward-token-2                     380   0%
                            c-beginning-of-current-token                120   0%
                            c-backward-sws                         93   0%
                        - c-bs-at-toplevel-p                     5240   8%
                         - c-brace-stack-at                      5080   8%
                          - c-update-brace-stack                 4866   8%
                           - c-syntactic-re-search-forward               3937   6%
                            - c-beginning-of-macro               1121   1%
                               back-to-indentation                395   0%
                               #<compiled 0x6ff9e5>                 28   0%
                               #<compiled 0x6ff9f1>                 20   0%
                               c-backward-single-comment                  1   0%
                              #<compiled 0x6f0bf1>                 27   0%
                              c-end-of-macro                       17   0%
                             c-beginning-of-current-token                391   0%
                             match-string-no-properties                 21   0%
                        - c-beginning-of-macro                    733   1%
                           back-to-indentation                    192   0%
                           c-backward-single-comment                150   0%
                           #<compiled 0x6ff9e5>                    10   0%
                           #<compiled 0x6ff9f1>                     8   0%
                        - c-forward-sws                           283   0%
                           c-forward-single-comment                 17   0%
                         - c-beginning-of-macro                    11   0%
                            c-backward-single-comment                  7   0%
                            back-to-indentation                     2   0%
                        - c-backward-sws                           80   0%
                         - c-beginning-of-macro                    30   0%
                            back-to-indentation                    11   0%
                          c-beginning-of-current-token                 12   0%
                          c-end-of-macro                            5   0%
                         c-skip-comments-and-strings                  3   0%
                         eval                                       1   0%
                      - c-font-lock-cut-off-declarators               5658   9%
                       - c-determine-limit                       1968   3%
                        - c-semi-pp-to-literal                    482   0%
                           c-restore-string-fences                 62   0%
                           c-parse-ps-state-below                   3   0%
                         - c-semi-get-near-cache-entry                  2   0%
                            copy-tree                               1   0%
                           #<compiled 0x71fcd1>                     1   0%
                           c-semi-put-near-cache-entry                  1   0%
                        - c-determine-limit                       452   0%
                         - c-semi-pp-to-literal                   117   0%
                            c-restore-string-fences                 20   0%
                            c-semi-get-near-cache-entry                  2   0%
                            c-parse-ps-state-below                  1   0%
                         - c-backward-sws                          17   0%
                          - c-beginning-of-macro                    4   0%
                             back-to-indentation                    1   0%
                            c-beginning-of-current-token                  1   0%
                        - c-backward-sws                           88   0%
                         - c-beginning-of-macro                    33   0%
                            back-to-indentation                    14   0%
                            c-backward-single-comment                  2   0%
                            #<compiled 0x6ff9e5>                    1   0%
                       - c-back-over-member-initializers               1728   2%
                        - c-parse-state                           880   1%
                         - c-parse-state-1                        692   1%
                          - c-append-to-state-cache                273   0%
                           - c-beginning-of-macro                 171   0%
                              c-backward-single-comment                135   0%
                              back-to-indentation                  20   0%
                              #<compiled 0x6ff9e5>                  1   0%
                          - c-remove-stale-state-cache                228   0%
                           - c-beginning-of-macro                 178   0%
                              c-backward-single-comment                131   0%
                              back-to-indentation                  13   0%
                              #<compiled 0x6ff9f1>                  3   0%
                              #<compiled 0x6ff9e5>                  1   0%
                          - c-parse-state-get-strategy                166   0%
                           - c-beginning-of-macro                 156   0%
                              c-backward-single-comment                134   0%
                              back-to-indentation                   7   0%
                              #<compiled 0x6ff9f1>                  1   0%
                         - c-beginning-of-macro                   172   0%
                            c-backward-single-comment                129   0%
                            back-to-indentation                    15   0%
                         - c-syntactic-end-of-macro                  6   0%
                            c-end-of-macro                          2   0%
                        - c-backward-sws                          414   0%
                         - c-beginning-of-macro                   105   0%
                            back-to-indentation                    43   0%
                            c-backward-single-comment                  4   0%
                            #<compiled 0x6ff9e5>                    3   0%
                            #<compiled 0x6ff9f1>                    2   0%
                            c-macro-is-genuine-p                    1   0%
                           c-beginning-of-current-token                  1   0%
                        - c-just-after-func-arglist-p                 57   0%
                         - c-beginning-of-statement-1                 52   0%
                          - c-crosses-statement-barrier-p                  9   0%
                           - c-backward-sws                         3   0%
                            - c-beginning-of-macro                  2   0%
                               back-to-indentation                  1   0%
                             c-forward-sws                          2   0%
                             c-literal-limits                       1   0%
                             c-at-macro-vsemi-p                     1   0%
                          - c-beginning-of-macro                    6   0%
                             back-to-indentation                    1   0%
                          - c-backward-sws                          4   0%
                             c-beginning-of-macro                   1   0%
                          - c-at-macro-vsemi-p                      4   0%
                             c-backward-sws                         1   0%
                          - c-punctuation-in                        2   0%
                             c-forward-sws                          2   0%
                         - c-forward-decl-or-cast-1                  4   0%
                            c-forward-type                          2   0%
                          - c-backward-token-2                      1   0%
                             c-backward-sws                         1   0%
                        - c-back-over-compound-identifier                 53   0%
                           c-on-identifier                         30   0%
                         - c-backward-sws                           8   0%
                          - c-beginning-of-macro                    5   0%
                             back-to-indentation                    2   0%
                             c-backward-single-comment                  1   0%
                         - c-backward-token-2                       5   0%
                            c-beginning-of-current-token                  2   0%
                            c-backward-sws                          1   0%
                       - c-parse-state                            663   1%
                        - c-parse-state-1                         658   1%
                         - c-append-lower-brace-pair-to-state-cache                412   0%
                          - c-beginning-of-macro                    8   0%
                             back-to-indentation                    3   0%
                         - c-remove-stale-state-cache-backwards                220   0%
                          - c-state-literal-at                    158   0%
                             c-state-pp-to-literal                 86   0%
                           - c-state-safe-place                    69   0%
                              c-state-pp-to-literal                 61   0%
                            - c-beginning-of-macro                  7   0%
                               c-backward-single-comment                  5   0%
                            c-state-balance-parens-backwards                  9   0%
                            c-beginning-of-macro                    1   0%
                         - c-parse-state-get-strategy                  8   0%
                          - c-beginning-of-macro                    8   0%
                             back-to-indentation                    2   0%
                             #<compiled 0x6ff9f1>                   1   0%
                         - c-remove-stale-state-cache                  5   0%
                          - c-beginning-of-macro                    4   0%
                             back-to-indentation                    2   0%
                         - c-append-to-state-cache                  4   0%
                          - c-beginning-of-macro                    2   0%
                             back-to-indentation                    1   0%
                        - c-beginning-of-macro                      5   0%
                           #<compiled 0x6ff9f1>                     1   0%
                           back-to-indentation                      1   0%
                       - c-syntactic-skip-backward                359   0%
                        - c-backward-sws                          110   0%
                         - c-beginning-of-macro                    29   0%
                            back-to-indentation                    15   0%
                            c-backward-single-comment                  1   0%
                        - c-beginning-of-macro                     78   0%
                           c-backward-single-comment                 22   0%
                           back-to-indentation                     21   0%
                           #<compiled 0x6ff9e5>                     1   0%
                        - c-literal-start                          73   0%
                         - c-semi-pp-to-literal                    69   0%
                            c-parse-ps-state-below                  2   0%
                       - c-at-toplevel-p                          152   0%
                        - c-parse-state                            90   0%
                         - c-parse-state-1                         83   0%
                          - c-append-to-state-cache                 37   0%
                           - c-beginning-of-macro                  16   0%
                              back-to-indentation                   7   0%
                          - c-remove-stale-state-cache                 31   0%
                           - c-beginning-of-macro                  16   0%
                              back-to-indentation                   5   0%
                          - c-parse-state-get-strategy                  8   0%
                           - c-beginning-of-macro                   6   0%
                              back-to-indentation                   5   0%
                         - c-beginning-of-macro                     7   0%
                            back-to-indentation                     3   0%
                            #<compiled 0x6ff9e5>                    1   0%
                        - c-search-uplist-for-classkey                 61   0%
                         - c-looking-at-decl-block                 59   0%
                          - c-syntactic-skip-backward                 36   0%
                           - c-backward-sws                        19   0%
                            - c-beginning-of-macro                  4   0%
                               back-to-indentation                  3   0%
                           - c-beginning-of-macro                   8   0%
                              back-to-indentation                   1   0%
                              c-backward-single-comment                  1   0%
                              #<compiled 0x6ff9f1>                  1   0%
                           - c-literal-start                        2   0%
                              c-semi-pp-to-literal                  2   0%
                          - c-backward-sws                          6   0%
                           - c-beginning-of-macro                   3   0%
                              c-backward-single-comment                  3   0%
                       - c-forward-decl-or-cast-1                  68   0%
                        - c-forward-type                           31   0%
                         - c-forward-name                           9   0%
                            c-forward-sws                           2   0%
                         - c-forward-keyword-clause                  5   0%
                            c-forward-sws                           4   0%
                         - c-check-qualified-type                   2   0%
                          - c-forward-over-compound-identifier                  2   0%
                             c-on-identifier                        1   0%
                             c-forward-sws                          1   0%
                         - c-add-type                               2   0%
                          - c-syntactic-content                     1   0%
                             apply                                  1   0%
                        - c-backward-token-2                        8   0%
                           c-beginning-of-current-token                  3   0%
                           c-backward-sws                           1   0%
                          c-forward-name                            7   0%
                        - c-forward-keyword-clause                  2   0%
                           c-forward-sws                            1   0%
                          c-forward-annotation                      1   0%
                       - c-get-fontification-context                 34   0%
                        - c-inside-bracelist-p                     27   0%
                         - c-looking-at-or-maybe-in-bracelist                 16   0%
                          - c-backward-token-2                      9   0%
                           - c-backward-sws                         5   0%
                            - c-beginning-of-macro                  4   0%
                               back-to-indentation                  4   0%
                          - c-backward-sws                          4   0%
                             c-beginning-of-current-token                  2   0%
                           - c-beginning-of-macro                   1   0%
                              back-to-indentation                   1   0%
                         - c-backward-over-enum-header                  6   0%
                          - c-backward-token-2                      5   0%
                           - c-backward-sws                         2   0%
                              c-beginning-of-macro                  1   0%
                         - c-looking-at-inexpr-block                  4   0%
                          - c-backward-sws                          3   0%
                             c-beginning-of-macro                   1   0%
                        - c-parse-state                             6   0%
                         - c-parse-state-1                          6   0%
                          - c-remove-stale-state-cache                  3   0%
                           - c-beginning-of-macro                   3   0%
                              back-to-indentation                   1   0%
                              c-backward-single-comment                  1   0%
                          - c-parse-state-get-strategy                  1   0%
                             c-beginning-of-macro                   1   0%
                          - c-append-to-state-cache                  1   0%
                           - c-beginning-of-macro                   1   0%
                              back-to-indentation                   1   0%
                       - c-forward-sws                             27   0%
                          c-forward-single-comment                 10   0%
                       - c-font-lock-single-decl                   24   0%
                        - c-font-lock-declarators                  19   0%
                         - c-do-declarators                        17   0%
                          - c-forward-declarator                   13   0%
                           - c-syntactic-re-search-forward                  5   0%
                            - c-beginning-of-macro                  2   0%
                               back-to-indentation                  1   0%
                               #<compiled 0x6ff9e5>                  1   0%
                             c-backward-sws                         3   0%
                           - c-forward-name                         3   0%
                              c-forward-sws                         2   0%
                            c-forward-sws                           1   0%
                        - c-backward-sws                            2   0%
                         - c-beginning-of-macro                     2   0%
                            back-to-indentation                     1   0%
                         c-skip-comments-and-strings                  4   0%
                      - c-font-lock-enclosing-decls               4125   6%
                       - c-parse-state                           1901   3%
                        - c-parse-state-1                        1703   2%
                         - c-append-lower-brace-pair-to-state-cache                488   0%
                          - c-beginning-of-macro                   14   0%
                             c-backward-single-comment                  3   0%
                             back-to-indentation                    2   0%
                             #<compiled 0x6ff9f1>                   1   0%
                         - c-remove-stale-state-cache-backwards                487   0%
                          - c-state-literal-at                    294   0%
                           - c-state-safe-place                   170   0%
                              c-state-pp-to-literal                129   0%
                            - c-beginning-of-macro                 41   0%
                               c-backward-single-comment                 35   0%
                               back-to-indentation                  2   0%
                             c-state-pp-to-literal                122   0%
                          - c-beginning-of-macro                   70   0%
                             c-backward-single-comment                 64   0%
                             back-to-indentation                    2   0%
                            c-state-balance-parens-backwards                 30   0%
                         - c-append-to-state-cache                349   0%
                          - c-beginning-of-macro                  114   0%
                             c-backward-single-comment                 76   0%
                             back-to-indentation                   25   0%
                             #<compiled 0x6ff9e5>                   1   0%
                         - c-parse-state-get-strategy                179   0%
                          - c-beginning-of-macro                  166   0%
                             c-backward-single-comment                126   0%
                             back-to-indentation                   16   0%
                             #<compiled 0x6ff9f1>                   1   0%
                         - c-remove-stale-state-cache                177   0%
                          - c-beginning-of-macro                  121   0%
                             c-backward-single-comment                 70   0%
                             back-to-indentation                   18   0%
                        - c-beginning-of-macro                    177   0%
                           c-backward-single-comment                137   0%
                           back-to-indentation                     16   0%
                        - c-syntactic-end-of-macro                  4   0%
                           c-end-of-macro                           1   0%
                          #<compiled 0x922739>                      1   0%
                       - c-determine-limit                       1366   2%
                        - c-determine-limit                       311   0%
                         - c-backward-sws                           9   0%
                          - c-beginning-of-macro                    3   0%
                             back-to-indentation                    1   0%
                           c-semi-pp-to-literal                     4   0%
                        - c-backward-sws                           76   0%
                         - c-beginning-of-macro                    24   0%
                            back-to-indentation                     6   0%
                            c-backward-single-comment                  1   0%
                        - c-semi-pp-to-literal                     31   0%
                         - c-semi-get-near-cache-entry                 10   0%
                            copy-tree                               2   0%
                           #<compiled 0x71fcd1>                     3   0%
                       - c-syntactic-skip-backward                690   1%
                        - c-literal-start                         264   0%
                         - c-semi-pp-to-literal                   252   0%
                            c-parse-ps-state-below                  3   0%
                            c-semi-get-near-cache-entry                  2   0%
                            #<compiled 0x71fcd1>                    1   0%
                        - c-backward-sws                          201   0%
                         - c-beginning-of-macro                    68   0%
                            back-to-indentation                    32   0%
                            #<compiled 0x6ff9f1>                    3   0%
                            #<compiled 0x6ff9e5>                    1   0%
                        - c-beginning-of-macro                     99   0%
                           back-to-indentation                     37   0%
                           #<compiled 0x6ff9e5>                     4   0%
                           #<compiled 0x6ff9f1>                     2   0%
                       - c-forward-sws                             50   0%
                          c-forward-single-comment                  7   0%
                        - c-beginning-of-macro                      1   0%
                           c-backward-single-comment                  1   0%
                       - c-bs-at-toplevel-p                         9   0%
                        - c-brace-stack-at                          9   0%
                         - c-update-brace-stack                     9   0%
                          - c-syntactic-re-search-forward                  8   0%
                           - c-beginning-of-macro                   3   0%
                              back-to-indentation                   1   0%
                              #<compiled 0x6ff9e5>                  1   0%
                         c-skip-comments-and-strings                  4   0%
                      - c-font-lock-complex-decl-prepare               2114   3%
                       - c-parse-state                           1530   2%
                        - c-parse-state-1                        1349   2%
                         - c-append-to-state-cache                656   1%
                          - c-beginning-of-macro                  207   0%
                             c-backward-single-comment                136   0%
                             back-to-indentation                   32   0%
                             #<compiled 0x6ff9e5>                   2   0%
                             #<compiled 0x6ff9f1>                   1   0%
                          - c-append-lower-brace-pair-to-state-cache                 97   0%
                           - c-beginning-of-macro                   1   0%
                              back-to-indentation                   1   0%
                         - c-remove-stale-state-cache                471   0%
                          - c-beginning-of-macro                  194   0%
                             c-backward-single-comment                128   0%
                             back-to-indentation                   32   0%
                             #<compiled 0x6ff9f1>                   2   0%
                            c-end-of-macro                          2   0%
                         - c-parse-state-get-strategy                177   0%
                          - c-beginning-of-macro                  164   0%
                             c-backward-single-comment                125   0%
                             back-to-indentation                   13   0%
                             #<compiled 0x6ff9e5>                   1   0%
                             #<compiled 0x6ff9f1>                   1   0%
                          - c-get-fallback-scan-pos                  7   0%
                           - beginning-of-defun                     7   0%
                            - beginning-of-defun-raw                  7   0%
                               syntax-ppss                          5   0%
                         - c-remove-stale-state-cache-backwards                  1   0%
                          - c-state-literal-at                      1   0%
                           - c-state-safe-place                     1   0%
                              c-state-pp-to-literal                  1   0%
                        - c-beginning-of-macro                    156   0%
                           c-backward-single-comment                125   0%
                           back-to-indentation                     10   0%
                           #<compiled 0x6ff9e5>                     1   0%
                        - c-syntactic-end-of-macro                  4   0%
                           c-end-of-macro                           3   0%
                          #<compiled 0x922739>                      1   0%
                       - c-backward-sws                           316   0%
                        - c-beginning-of-macro                     84   0%
                           back-to-indentation                     35   0%
                           c-backward-single-comment                  6   0%
                           #<compiled 0x6ff9f1>                     2   0%
                           #<compiled 0x6ff9e5>                     1   0%
                       - c-beginning-of-macro                     158   0%
                          c-backward-single-comment                127   0%
                          back-to-indentation                      14   0%
                         c-skip-comments-and-strings                  3   0%
                      - c-font-lock-enum-tail                    1130   1%
                       - c-parse-state                            893   1%
                        - c-parse-state-1                         712   1%
                         - c-append-to-state-cache                281   0%
                          - c-beginning-of-macro                  167   0%
                             c-backward-single-comment                133   0%
                             back-to-indentation                   15   0%
                         - c-remove-stale-state-cache                245   0%
                          - c-beginning-of-macro                  181   0%
                             c-backward-single-comment                120   0%
                             back-to-indentation                   25   0%
                             #<compiled 0x6ff9f1>                   3   0%
                            c-end-of-macro                          1   0%
                         - c-parse-state-get-strategy                166   0%
                          - c-beginning-of-macro                  161   0%
                             c-backward-single-comment                131   0%
                             back-to-indentation                   14   0%
                        - c-beginning-of-macro                    164   0%
                           c-backward-single-comment                127   0%
                           back-to-indentation                      9   0%
                        - c-syntactic-end-of-macro                  3   0%
                           c-end-of-macro                           3   0%
                       - c-backward-over-enum-header                222   0%
                        - c-backward-token-2                      148   0%
                         - c-backward-sws                          99   0%
                          - c-beginning-of-macro                   44   0%
                             back-to-indentation                   13   0%
                             c-backward-single-comment                 13   0%
                            c-beginning-of-current-token                  7   0%
                           c-beginning-of-current-token                  8   0%
                          c-on-identifier                           1   0%
                         c-skip-comments-and-strings                  5   0%
                         c-syntactic-skip-backward                  1   0%
                      - c-font-lock-invalid-single-quotes                459   0%
                       - c-literal-limits                         261   0%
                        - c-full-pp-to-literal                    249   0%
                         - c-full-get-near-cache-entry                  5   0%
                          - copy-tree                               2   0%
                             copy-tree                              1   0%
                           c-parse-ps-state-below                   5   0%
                           #<compiled 0x8c500d>                     1   0%
                        #<compiled 0x68dfd1>                      242   0%
                      - #<compiled 0x68dff1>                      233   0%
                         c-forward-sws                              3   0%
                        #<compiled 0x66b209>                      226   0%
                      - #<compiled 0x66b1e9>                      224   0%
                         #<compiled 0x66b1b9>                       2   0%
                        #<compiled 0x66b171>                      217   0%
                      - #<compiled 0x8c1685>                      184   0%
                       - c-font-lock-doc-comments                 178   0%
                        - c-literal-start                         151   0%
                         - c-semi-pp-to-literal                   143   0%
                            c-restore-string-fences                  8   0%
                            c-parse-ps-state-below                  7   0%
                            c-semi-get-near-cache-entry                  2   0%
                            c-semi-put-near-cache-entry                  1   0%
                      - c-font-lock-enum-body                      45   0%
                       - c-backward-over-enum-header                  5   0%
                        - c-backward-token-2                        4   0%
                         - c-backward-sws                           4   0%
                          - c-beginning-of-macro                    2   0%
                             back-to-indentation                    2   0%
                       - c-font-lock-declarators                    2   0%
                        - c-do-declarators                          2   0%
                           c-forward-declarator                     1   0%
                         c-forward-sws                              1   0%
                      - #<compiled 0x1ffe1592efb9>                 33   0%
                         eval                                       1   0%
                     - font-lock-fontify-syntactically-region                997   1%
                        syntax-ppss                               679   1%
                        looking-back                               29   0%
                     - font-lock-unfontify-region                  20   0%
                        font-lock-default-unfontify-region                 13   0%
                       font-lock-extend-region-multiline                  2   0%
                    - c-before-context-fl-expand-region               2123   3%
                     - mapc                                      2122   3%
                      - #<compiled 0x94aad5>                     2120   3%
                       - c-context-expand-fl-region               2098   3%
                        - c-fl-decl-start                        1483   2%
                         - c-determine-limit                      773   1%
                          - c-determine-limit                     211   0%
                           - c-semi-pp-to-literal                  69   0%
                              c-restore-string-fences                 17   0%
                              c-semi-put-near-cache-entry                  1   0%
                           - c-backward-sws                        10   0%
                            - c-beginning-of-macro                  2   0%
                               back-to-indentation                  2   0%
                           - c-determine-limit                      3   0%
                              c-backward-sws                        1   0%
                          - c-semi-pp-to-literal                  143   0%
                             c-restore-string-fences                 25   0%
                             c-parse-ps-state-below                  4   0%
                           - c-semi-get-near-cache-entry                  4   0%
                              copy-tree                             1   0%
                             #<compiled 0x71fcd1>                   1   0%
                          - c-backward-sws                         98   0%
                           - c-beginning-of-macro                  40   0%
                              back-to-indentation                   8   0%
                              c-backward-single-comment                  4   0%
                              #<compiled 0x6ff9e5>                  1   0%
                         - c-syntactic-skip-backward                242   0%
                          - c-literal-start                        73   0%
                           - c-semi-pp-to-literal                  70   0%
                              c-semi-get-near-cache-entry                  1   0%
                              c-parse-ps-state-below                  1   0%
                          - c-backward-sws                         68   0%
                           - c-beginning-of-macro                  23   0%
                              back-to-indentation                   9   0%
                              c-backward-single-comment                  2   0%
                              #<compiled 0x6ff9f1>                  1   0%
                             c-beginning-of-current-token                  1   0%
                          - c-beginning-of-macro                   38   0%
                             back-to-indentation                   16   0%
                             #<compiled 0x6ff9f1>                   3   0%
                             c-backward-single-comment                  1   0%
                         - c-parse-state                          152   0%
                          - c-parse-state-1                       149   0%
                             c-append-lower-brace-pair-to-state-cache                 69   0%
                           - c-append-to-state-cache                 41   0%
                            - c-beginning-of-macro                 10   0%
                               back-to-indentation                  4   0%
                           - c-remove-stale-state-cache                 32   0%
                            - c-beginning-of-macro                  7   0%
                               #<compiled 0x6ff9f1>                  1   0%
                           - c-parse-state-get-strategy                  3   0%
                            - c-beginning-of-macro                  3   0%
                               #<compiled 0x6ff9f1>                  1   0%
                            c-beginning-of-macro                    2   0%
                         - c-literal-start                        132   0%
                          - c-semi-pp-to-literal                  115   0%
                           - c-semi-get-near-cache-entry                 11   0%
                              copy-tree                             4   0%
                             c-restore-string-fences                  7   0%
                             #<compiled 0x71fcd1>                   3   0%
                             c-parse-ps-state-below                  2   0%
                         - c-cheap-inside-bracelist-p                 46   0%
                          - c-backward-sws                         20   0%
                           - c-beginning-of-macro                  10   0%
                              back-to-indentation                   6   0%
                              #<compiled 0x6ff9f1>                  1   0%
                          - c-backward-token-2                     13   0%
                             c-beginning-of-current-token                  8   0%
                         - c-forward-sws                           29   0%
                            c-forward-single-comment                  6   0%
                          - c-beginning-of-macro                    3   0%
                             c-backward-single-comment                  2   0%
                         - c-forward-type                          25   0%
                          - c-forward-name                         11   0%
                             c-forward-sws                          1   0%
                          - c-check-qualified-type                  5   0%
                           - c-forward-over-compound-identifier                  4   0%
                              c-forward-over-token                  3   0%
                         - c-looking-at-or-maybe-in-bracelist                 21   0%
                          - c-backward-token-2                     11   0%
                           - c-backward-sws                         7   0%
                              c-beginning-of-macro                  3   0%
                              c-beginning-of-current-token                  1   0%
                          - c-backward-sws                          6   0%
                           - c-beginning-of-macro                   4   0%
                              c-backward-single-comment                  1   0%
                         - c-backward-sws                          11   0%
                          - c-beginning-of-macro                    6   0%
                             back-to-indentation                    3   0%
                        - c-fl-decl-end                           600   0%
                         - c-literal-start                        413   0%
                          - c-semi-pp-to-literal                  404   0%
                             c-parse-ps-state-below                201   0%
                           - c-semi-get-near-cache-entry                  9   0%
                              copy-tree                             1   0%
                             c-semi-put-near-cache-entry                  1   0%
                             #<compiled 0x71fcd1>                   1   0%
                         - c-forward-declarator                    57   0%
                          - c-forward-name                         19   0%
                           - c-forward-sws                          3   0%
                              c-forward-single-comment                  1   0%
                          - c-backward-sws                         11   0%
                             c-beginning-of-current-token                  4   0%
                           - c-beginning-of-macro                   2   0%
                              back-to-indentation                   1   0%
                          - c-syntactic-re-search-forward                 10   0%
                           - c-beginning-of-macro                   3   0%
                              back-to-indentation                   1   0%
                         - c-backward-sws                          43   0%
                          - c-beginning-of-macro                    8   0%
                             back-to-indentation                    4   0%
                            c-beginning-of-current-token                  3   0%
                         - c-forward-token-2                       23   0%
                          - c-forward-over-token-and-ws                 18   0%
                           - c-forward-over-token                  10   0%
                              c-forward-sws                         3   0%
                             c-forward-sws                          4   0%
                            c-forward-sws                           4   0%
                         - c-beginning-of-macro                    20   0%
                            back-to-indentation                     4   0%
                            #<compiled 0x6ff9f1>                    1   0%
                           c-on-identifier                         12   0%
                           c-end-of-macro                           1   0%
                    - #<compiled 0x94aecd>                        202   0%
                     - c-clear-string-fences                      186   0%
                        #<compiled 0x668351>                        3   0%
                      c-restore-string-fences                       2   0%
                  - bug-reference-fontify                         114   0%
                     syntax-ppss                                    5   0%
               - run-with-timer                                    45   0%
                - apply                                            43   0%
                 - run-at-time                                     43   0%
                    timer-relative-time                            15   0%
                  - timer-activate                                 10   0%
                   - timer--activate                                4   0%
                      timer--time-less-p                            4   0%
                  - timer-set-time                                  6   0%
                   - timer--time-setter                             4   0%
                      timerp                                        1   0%
                    timer-set-function                              1   0%
                 #<compiled 0x962a15>                               3   0%
                 #<compiled 0xa4cbc5>                               1   0%
             - tool-bar-make-keymap                               298   0%
              - tool-bar-make-keymap-1                            278   0%
               - mapcar                                           275   0%
                - #<compiled 0x1ffe1597b427>                      270   0%
                 - eval                                           239   0%
                  - find-image                                    233   0%
                     image-search-load-path                       206   0%
                   - cond                                          15   0%
                    - not                                           4   0%
                     - display-color-p                              2   0%
                        display-graphic-p                           1   0%
                      <                                             3   0%
                     image-type-available-p                         1   0%
                 - display-images-p                                 4   0%
                  - display-graphic-p                               3   0%
                     framep-on-display                              2   0%
             - funcall                                             78   0%
              - #<compiled 0x1ffe1595b97f>                         75   0%
               - gui-backend-selection-exists-p                    73   0%
                - apply                                            71   0%
                   #<compiled 0x1ffe159238e7>                      70   0%
             - eval                                                50   0%
              - if                                                 40   0%
               - display-graphic-p                                  1   0%
                  framep-on-display                                 1   0%
                unless                                              3   0%
               menu-bar-update-buffers                             49   0%
               file-remote-p                                       21   0%
               kill-this-buffer-enabled-p                          17   0%
             - #<compiled 0x1ffe159ee511>                          10   0%
              - apply                                              10   0%
               - redisplay--pre-redisplay-functions                  6   0%
                - run-hook-with-args                                3   0%
                   redisplay--update-region-highlight                  1   0%
             - mode-line-default-help-echo                          7   0%
              - window-at-side-p                                    4   0%
               - window-pixel-edges                                 4   0%
                  window-edges                                      2   0%
             - and                                                  6   0%
                if                                                  3   0%
                not                                                 1   0%
             - keymap-canonicalize                                  5   0%
                map-keymap                                          1   0%
               menu-bar-non-minibuffer-window-p                     1   0%
           - input-pending-p                                       67   0%
            - timer-event-handler                                  62   0%
             - apply                                               59   0%
                jit-lock-force-redisplay                           18   0%
          - if                                                   2387   3%
           - scroll-up                                            117   0%
            - eval                                                 65   0%
             - if                                                  40   0%
                frame-parameter                                     2   0%
               unless                                               3   0%
               mode-line-eol-desc                                   3   0%
              file-remote-p                                        47   0%
   - execute-extended-command                                      18   0%
    - sit-for                                                      13   0%
       redisplay                                                   11   0%
    - command-execute                                               1   0%
     - call-interactively                                           1   0%
      - funcall-interactively                                       1   0%
         profiler-report                                            1   0%
  - byte-code                                                     144   0%
   - read--expression                                              97   0%
    - read-from-minibuffer                                         70   0%
     - command-execute                                             21   0%
      - call-interactively                                         21   0%
       - funcall-interactively                                     21   0%
        - completion-at-point                                      21   0%
         - completion-in-region                                    21   0%
          - completion--in-region                                  21   0%
           - #<compiled 0x9f4dbd>                                  21   0%
            - apply                                                21   0%
             - #<compiled 0x1ffe159265d5>                          21   0%
              - completion--in-region-1                            21   0%
               - completion--do-completion                         21   0%
                - completion-try-completion                        14   0%
                 - completion--nth-completion                      14   0%
                  - completion--some                               14   0%
                   - #<compiled 0x9f4df1>                          14   0%
                      completion-basic-try-completion                 14   0%
                - minibuffer-completion-help                        7   0%
                 - completion-all-completions                       4   0%
                  - completion--nth-completion                      4   0%
                   - completion--some                               4   0%
                    - #<compiled 0x9f4e41>                          4   0%
                     - completion-basic-all-completions                  4   0%
                        completion-pcm--all-completions                  4   0%
                 - temp-buffer-window-show                          1   0%
                  - display-buffer                                  1   0%
                   - display-buffer-at-bottom                       1   0%
                    - split-window-no-error                         1   0%
                       split-window                                 1   0%
                 - display-completion-list                          1   0%
                  - run-hooks                                       1   0%
                     completion-setup-function                      1   0%
                   fit-window-to-buffer                             1   0%
     - redisplay_internal (C function)                              7   0%
      - #<compiled 0x1ffe159ee511>                                  2   0%
       - apply                                                      2   0%
          redisplay--pre-redisplay-functions                        1   0%
      - eval                                                        2   0%
         if                                                         1   0%
      - funcall                                                     1   0%
       - #<compiled 0x1ffe1595b97f>                                 1   0%
        - gui-backend-selection-exists-p                            1   0%
         - apply                                                    1   0%
            #<compiled 0x1ffe159238e7>                              1   0%
      - mode-line-default-help-echo                                 1   0%
       - window-at-side-p                                           1   0%
          window-pixel-edges                                        1   0%
        menu-bar-update-buffers                                     1   0%
       internal-timer-start-idle                                    1   0%
   - read-extended-command                                         47   0%
    - completing-read                                              47   0%
     - completing-read-default                                     47   0%
      - read-from-minibuffer                                       26   0%
       - redisplay_internal (C function)                            3   0%
        - funcall                                                   2   0%
         - #<compiled 0x1ffe1595b97f>                               2   0%
          - gui-backend-selection-exists-p                          2   0%
           - apply                                                  2   0%
              #<compiled 0x1ffe159238e7>                            2   0%
        - eval                                                      1   0%
           if                                                       1   0%
       - timer-event-handler                                        3   0%
        - apply                                                     3   0%
           #<compiled 0x1ffe159626e5>                               2   0%
         - blink-cursor-start                                       1   0%
          - blink-cursor--start-timer                               1   0%
           - run-with-timer                                         1   0%
            - apply                                                 1   0%
               run-at-time                                          1   0%
         internal-timer-start-idle                                  1   0%
         minibuffer-inactive-mode                                   1   0%
- ...                                                           13992  23%
   Automatic GC                                                 13967  22%
 - minibuffer-complete                                             25   0%
  - completion-in-region                                           25   0%
   - completion--in-region                                         25   0%
    - #<compiled 0xb2ebdd>                                         25   0%
     - apply                                                       25   0%
      - #<compiled 0x1ffe159265d5>                                 25   0%
       - completion--in-region-1                                   25   0%
        - completion--do-completion                                25   0%
         - completion-try-completion                               25   0%
          - completion--nth-completion                             25   0%
           - completion--some                                      25   0%
            - #<compiled 0xb2ec05>                                 25   0%
             - completion-basic-try-completion                     25   0%
              - try-completion                                     25   0%
               - #<compiled 0x1ffe15944f93>                        25   0%
                  complete-with-action                             25   0%
- timer-event-handler                                               2   0%
 - apply                                                            2   0%
    #<compiled 0x1ffe159626e5>                                      2   0%
  jit-lock--antiblink-post-command                                  1   0%

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

* Re: The Emacs master is much slower than the emacs-27 branch.
  2020-12-04 13:53             ` Stephen Berman
@ 2020-12-04 14:05               ` Stephen Berman
  2020-12-04 15:51                 ` Eli Zaretskii
  0 siblings, 1 reply; 74+ messages in thread
From: Stephen Berman @ 2020-12-04 14:05 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: acm, emacs-devel

On Fri, 04 Dec 2020 14:53:32 +0100 Stephen Berman <stephen.berman@gmx.net> wrote:

> On Fri, 04 Dec 2020 15:28:06 +0200 Eli Zaretskii <eliz@gnu.org> wrote:
>
>>> From: Stephen Berman <stephen.berman@gmx.net>
>>> Cc: acm@muc.de,  emacs-devel@gnu.org
>>> Date: Fri, 04 Dec 2020 13:54:06 +0100
>>>
>>> >> As noted above, I build both master and emacs-27 with CFLAGS='-Og -g3'.
>>> >> Given that, is such a difference still expected?
>>> >
>>> > No.  But if you see this consistently, please produce and post the
>>> > profile of each of the versions, and let's take it from there.
>>>
>>> Since the builds I ran the benchmark on were about two weeks old, I
>>> updated both branches now, rebuilt and ran the benchmark again, and got
>>> the same results: ~21 seconds on master, ~61 seconds on emacs-27.
>>> Profiles attached.
>>
>> Thanks.  It looks like everything is just two to 3 times slower in
>> Emacs 28 on your system, which is definitely not my experience.
>         ^^
>         27
>
>> Are you sure all the Lisp files are byte-compiled?  What happens if
>> you "make bootstrap" in both branches, and then try again?
>
> I just rebuilt emacs-27 with "make bootstrap", reran the benchmark, and
> it took ~60 seconds, about a second faster than the previous
> non-bootstrapped build.  The profile is similar to the previous one from
> emacs-27, but I've attached for your perusal anyway.  I'll bootstrap
> master too and run the benchmark there again.

On freshly bootstrapped master the benchmark took the same time as
before, ~21 seconds, and the profile looks pretty much the same, so I
haven't attached it, but will send it if you want to see it.

Steve Berman



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

* Re: The Emacs master is much slower than the emacs-27 branch.
  2020-12-04  9:04   ` Alan Mackenzie
  2020-12-04  9:32     ` Stephen Berman
@ 2020-12-04 14:55     ` Arthur Miller
  2020-12-04 15:00       ` Arthur Miller
  1 sibling, 1 reply; 74+ messages in thread
From: Arthur Miller @ 2020-12-04 14:55 UTC (permalink / raw)
  To: Alan Mackenzie; +Cc: Stephen Berman, emacs-devel

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

Alan Mackenzie <acm@muc.de> writes:

> Hello, Steve.
>
> On Thu, Dec 03, 2020 at 23:17:18 +0100, Stephen Berman wrote:
>> On Thu, 3 Dec 2020 18:15:30 +0000 Alan Mackenzie <acm@muc.de> wrote:
>
>> > Hello, Emacs.
>
>> > I've got pretty much up to date copies of both the master and the
>> > emacs-27 branches.
>
>> > When I run my customary benchmark (see below) on master's src/xdisp.c in
>> > master, it's taking around 34s.  On emacs-27, it's taking 22s.
>
>> Hm, this is odd: I just ran your benchmark on src/xdisp.c (starting
>> Emacs with -Q, both configured with CFLAGS='-Og -g3') and got vastly
>> different timings than you did:
>
>> master:   21.785817861557007
>> emacs-27: 61.3885281085968
>
> Maybe the emacs-27 is built without optimisation for debugging.
>
>> This is with:
>
>> GNU Emacs 28.0.50 (build 42, x86_64-pc-linux-gnu, GTK+ Version 3.24.17,
>> cairo version 1.17.3) of 2020-11-21
>> emacs-repository-version: "0a8cd0116204354e95fbb4ebde64c58123502aa2"
>
>> and
>
>> GNU Emacs 27.1.50 (build 18, x86_64-pc-linux-gnu, GTK+ Version 3.24.17)
>> of 2020-11-21
>> emacs-repository-version: "3ceee398192e312faa3ea073365c49bcce9ef61b"
>
>> Steve Berman
On my computer "stock" build from master (28) and 27.1 from Arch repo are at about
same speed. I even posted on Reddit like two days ago.

You can see in screenshots, image 1 and 3 are "stock" versions, 27.1 and
28. Image 2 is my own configured build (no gtk and some other stuff).


[-- Attachment #2: emacs-1201-1.png --]
[-- Type: image/png, Size: 91277 bytes --]

[-- Attachment #3: emacs-1201-3.png --]
[-- Type: image/png, Size: 95747 bytes --]

[-- Attachment #4: emacs-1201-2.png --]
[-- Type: image/png, Size: 95068 bytes --]

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

* Re: The Emacs master is much slower than the emacs-27 branch.
  2020-12-04 14:55     ` Arthur Miller
@ 2020-12-04 15:00       ` Arthur Miller
  0 siblings, 0 replies; 74+ messages in thread
From: Arthur Miller @ 2020-12-04 15:00 UTC (permalink / raw)
  To: Alan Mackenzie; +Cc: Stephen Berman, emacs-devel

Arthur Miller <arthur.miller@live.com> writes:

> Alan Mackenzie <acm@muc.de> writes:
>
>> Hello, Steve.
>>
>> On Thu, Dec 03, 2020 at 23:17:18 +0100, Stephen Berman wrote:
>>> On Thu, 3 Dec 2020 18:15:30 +0000 Alan Mackenzie <acm@muc.de> wrote:
>>
>>> > Hello, Emacs.
>>
>>> > I've got pretty much up to date copies of both the master and the
>>> > emacs-27 branches.
>>
>>> > When I run my customary benchmark (see below) on master's src/xdisp.c in
>>> > master, it's taking around 34s.  On emacs-27, it's taking 22s.
>>
>>> Hm, this is odd: I just ran your benchmark on src/xdisp.c (starting
>>> Emacs with -Q, both configured with CFLAGS='-Og -g3') and got vastly
>>> different timings than you did:
>>
>>> master:   21.785817861557007
>>> emacs-27: 61.3885281085968
>>
>> Maybe the emacs-27 is built without optimisation for debugging.
>>
>>> This is with:
>>
>>> GNU Emacs 28.0.50 (build 42, x86_64-pc-linux-gnu, GTK+ Version 3.24.17,
>>> cairo version 1.17.3) of 2020-11-21
>>> emacs-repository-version: "0a8cd0116204354e95fbb4ebde64c58123502aa2"
>>
>>> and
>>
>>> GNU Emacs 27.1.50 (build 18, x86_64-pc-linux-gnu, GTK+ Version 3.24.17)
>>> of 2020-11-21
>>> emacs-repository-version: "3ceee398192e312faa3ea073365c49bcce9ef61b"
>>
>>> Steve Berman
> On my computer "stock" build from master (28) and 27.1 from Arch repo are at about
> same speed. I even posted on Reddit like two days ago.
>
> You can see in screenshots, image 1 and 3 are "stock" versions, 27.1 and
> 28. Image 2 is my own configured build (no gtk and some other stuff).
Sorry, I saw later mails and realized you were talking about benchmark;
thought you were talking about the startup :-).



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

* Re: The Emacs master is much slower than the emacs-27 branch.
  2020-12-04 14:05               ` Stephen Berman
@ 2020-12-04 15:51                 ` Eli Zaretskii
  2020-12-04 16:03                   ` Stephen Berman
  2020-12-04 19:27                   ` Gregory Heytings via Emacs development discussions.
  0 siblings, 2 replies; 74+ messages in thread
From: Eli Zaretskii @ 2020-12-04 15:51 UTC (permalink / raw)
  To: Stephen Berman; +Cc: acm, emacs-devel

> From: Stephen Berman <stephen.berman@gmx.net>
> Cc: acm@muc.de,  emacs-devel@gnu.org
> Date: Fri, 04 Dec 2020 15:05:54 +0100
> 
> > I just rebuilt emacs-27 with "make bootstrap", reran the benchmark, and
> > it took ~60 seconds, about a second faster than the previous
> > non-bootstrapped build.  The profile is similar to the previous one from
> > emacs-27, but I've attached for your perusal anyway.  I'll bootstrap
> > master too and run the benchmark there again.
> 
> On freshly bootstrapped master the benchmark took the same time as
> before, ~21 seconds, and the profile looks pretty much the same, so I
> haven't attached it, but will send it if you want to see it.

Thanks.  This is very strange.  What are the build options and the
features in each build? are they identical?



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

* Re: The Emacs master is much slower than the emacs-27 branch.
  2020-12-04 15:51                 ` Eli Zaretskii
@ 2020-12-04 16:03                   ` Stephen Berman
  2020-12-04 16:28                     ` Óscar Fuentes
                                       ` (3 more replies)
  2020-12-04 19:27                   ` Gregory Heytings via Emacs development discussions.
  1 sibling, 4 replies; 74+ messages in thread
From: Stephen Berman @ 2020-12-04 16:03 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: acm, emacs-devel

On Fri, 04 Dec 2020 17:51:03 +0200 Eli Zaretskii <eliz@gnu.org> wrote:

>> From: Stephen Berman <stephen.berman@gmx.net>
>> Cc: acm@muc.de,  emacs-devel@gnu.org
>> Date: Fri, 04 Dec 2020 15:05:54 +0100
>>
>> > I just rebuilt emacs-27 with "make bootstrap", reran the benchmark, and
>> > it took ~60 seconds, about a second faster than the previous
>> > non-bootstrapped build.  The profile is similar to the previous one from
>> > emacs-27, but I've attached for your perusal anyway.  I'll bootstrap
>> > master too and run the benchmark there again.
>>
>> On freshly bootstrapped master the benchmark took the same time as
>> before, ~21 seconds, and the profile looks pretty much the same, so I
>> haven't attached it, but will send it if you want to see it.
>
> Thanks.  This is very strange.  What are the build options and the
> features in each build? are they identical?

emacs-27:

system-configuration-options
"'CFLAGS=-Og -g3' PKG_CONFIG_PATH=/opt/qt5/lib/pkgconfig"

system-configuration-features
"XPM JPEG TIFF GIF PNG RSVG SOUND DBUS GSETTINGS GLIB NOTIFY INOTIFY ACL
GNUTLS LIBXML2 FREETYPE HARFBUZZ XFT ZLIB TOOLKIT_SCROLL_BARS GTK3 X11
XDBE XIM MODULES THREADS LIBSYSTEMD PDUMPER LCMS2 GMP"

master:

system-configuration-options
"--with-xwidgets 'CFLAGS=-Og -g3' PKG_CONFIG_PATH=/opt/qt5/lib/pkgconfig"

system-configuration-features
"XPM JPEG TIFF GIF PNG RSVG CAIRO SOUND DBUS GSETTINGS GLIB NOTIFY
INOTIFY ACL GNUTLS LIBXML2 FREETYPE HARFBUZZ ZLIB TOOLKIT_SCROLL_BARS
GTK3 X11 XDBE XIM MODULES THREADS XWIDGETS LIBSYSTEMD PDUMPER LCMS2"



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

* Re: The Emacs master is much slower than the emacs-27 branch.
  2020-12-04 16:03                   ` Stephen Berman
@ 2020-12-04 16:28                     ` Óscar Fuentes
  2020-12-04 18:51                       ` Eli Zaretskii
  2020-12-04 16:49                     ` Stefan Monnier
                                       ` (2 subsequent siblings)
  3 siblings, 1 reply; 74+ messages in thread
From: Óscar Fuentes @ 2020-12-04 16:28 UTC (permalink / raw)
  To: emacs-devel

Stephen Berman <stephen.berman@gmx.net> writes:

> emacs-27:
>
> system-configuration-options
> "'CFLAGS=-Og -g3' PKG_CONFIG_PATH=/opt/qt5/lib/pkgconfig"
>
> system-configuration-features
> "XPM JPEG TIFF GIF PNG RSVG SOUND DBUS GSETTINGS GLIB NOTIFY INOTIFY ACL
> GNUTLS LIBXML2 FREETYPE HARFBUZZ XFT ZLIB TOOLKIT_SCROLL_BARS GTK3 X11
> XDBE XIM MODULES THREADS LIBSYSTEMD PDUMPER LCMS2 GMP"
>
> master:
>
> system-configuration-options
> "--with-xwidgets 'CFLAGS=-Og -g3' PKG_CONFIG_PATH=/opt/qt5/lib/pkgconfig"
>
> system-configuration-features
> "XPM JPEG TIFF GIF PNG RSVG CAIRO SOUND DBUS GSETTINGS GLIB NOTIFY
> INOTIFY ACL GNUTLS LIBXML2 FREETYPE HARFBUZZ ZLIB TOOLKIT_SCROLL_BARS
> GTK3 X11 XDBE XIM MODULES THREADS XWIDGETS LIBSYSTEMD PDUMPER LCMS2"

Please correct me if I'm wrong, but overriding CFLAGS means that gcc
compiles with default optimization level, wich is -O0, hence you are
comparing unoptimized builds, right? In that case, a tiny change on some
often-used macro or function can make a big difference.




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

* Re: The Emacs master is much slower than the emacs-27 branch.
  2020-12-04 16:03                   ` Stephen Berman
  2020-12-04 16:28                     ` Óscar Fuentes
@ 2020-12-04 16:49                     ` Stefan Monnier
  2020-12-05 14:04                       ` Basil L. Contovounesios
       [not found]                     ` <837dpxedmz.fsf@gnu.org>
  2020-12-04 17:07                     ` Eli Zaretskii
  3 siblings, 1 reply; 74+ messages in thread
From: Stefan Monnier @ 2020-12-04 16:49 UTC (permalink / raw)
  To: Stephen Berman; +Cc: acm, Eli Zaretskii, emacs-devel

> system-configuration-features
> "XPM JPEG TIFF GIF PNG RSVG SOUND DBUS GSETTINGS GLIB NOTIFY INOTIFY ACL
> GNUTLS LIBXML2 FREETYPE HARFBUZZ XFT ZLIB TOOLKIT_SCROLL_BARS GTK3 X11
> XDBE XIM MODULES THREADS LIBSYSTEMD PDUMPER LCMS2 GMP"
[...]
> system-configuration-features
> "XPM JPEG TIFF GIF PNG RSVG CAIRO SOUND DBUS GSETTINGS GLIB NOTIFY
> INOTIFY ACL GNUTLS LIBXML2 FREETYPE HARFBUZZ ZLIB TOOLKIT_SCROLL_BARS
> GTK3 X11 XDBE XIM MODULES THREADS XWIDGETS LIBSYSTEMD PDUMPER LCMS2"

Hmm... so in Emacs-28, "you" removed XFT and GMP and replaced them with
CAIRO and XWIDGETS.

I doubt GMP and XWIDGETS make any difference, but maybe XFT or CAIRO
have something to do with the difference.

It might be worth fiddling with `--with(out)-xft` and
`--with(out)-cairo` to see if you can get closer to the origin of
the difference.


        Stefan




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

* Re: The Emacs master is much slower than the emacs-27 branch.
       [not found]                     ` <837dpxedmz.fsf@gnu.org>
@ 2020-12-04 17:03                       ` Stephen Berman
  2020-12-04 17:59                         ` Stephen Berman
  0 siblings, 1 reply; 74+ messages in thread
From: Stephen Berman @ 2020-12-04 17:03 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: acm, Stefan Monnier, emacs-devel

On Fri, 04 Dec 2020 18:31:48 +0200 Eli Zaretskii <eliz@gnu.org> wrote:

>> From: Stephen Berman <stephen.berman@gmx.net>
>> Cc: acm@muc.de,  emacs-devel@gnu.org
>> Date: Fri, 04 Dec 2020 17:03:00 +0100
>>
>> > Thanks.  This is very strange.  What are the build options and the
>> > features in each build? are they identical?
>>
>> emacs-27:
>>
>> system-configuration-options
>> "'CFLAGS=-Og -g3' PKG_CONFIG_PATH=/opt/qt5/lib/pkgconfig"
>>
>> system-configuration-features
>> "XPM JPEG TIFF GIF PNG RSVG SOUND DBUS GSETTINGS GLIB NOTIFY INOTIFY ACL
>> GNUTLS LIBXML2 FREETYPE HARFBUZZ XFT ZLIB TOOLKIT_SCROLL_BARS GTK3 X11
>> XDBE XIM MODULES THREADS LIBSYSTEMD PDUMPER LCMS2 GMP"
>>
>> master:
>>
>> system-configuration-options
>> "--with-xwidgets 'CFLAGS=-Og -g3' PKG_CONFIG_PATH=/opt/qt5/lib/pkgconfig"
>>
>> system-configuration-features
>> "XPM JPEG TIFF GIF PNG RSVG CAIRO SOUND DBUS GSETTINGS GLIB NOTIFY
>> INOTIFY ACL GNUTLS LIBXML2 FREETYPE HARFBUZZ ZLIB TOOLKIT_SCROLL_BARS
>> GTK3 X11 XDBE XIM MODULES THREADS XWIDGETS LIBSYSTEMD PDUMPER LCMS2"
>
> Could Cairo be the factor here?  Emacs 27 was built without it.

On Fri, 04 Dec 2020 11:49:25 -0500 Stefan Monnier <monnier@iro.umontreal.ca> wrote:

> Hmm... so in Emacs-28, "you" removed XFT and GMP and replaced them with
> CAIRO and XWIDGETS.
>
> I doubt GMP and XWIDGETS make any difference, but maybe XFT or CAIRO
> have something to do with the difference.
>
> It might be worth fiddling with `--with(out)-xft` and
> `--with(out)-cairo` to see if you can get closer to the origin of
> the difference.

I can try that, but since I used the default configuration features,
that suggests that those who got no difference between emacs-27 and
master with the benchmark, or where emacs-27 was even faster, built
emacs-27 --with-cairo and --without-xft.  Is that the case?

Steve Berman



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

* Re: The Emacs master is much slower than the emacs-27 branch.
  2020-12-04 16:03                   ` Stephen Berman
                                       ` (2 preceding siblings ...)
       [not found]                     ` <837dpxedmz.fsf@gnu.org>
@ 2020-12-04 17:07                     ` Eli Zaretskii
  3 siblings, 0 replies; 74+ messages in thread
From: Eli Zaretskii @ 2020-12-04 17:07 UTC (permalink / raw)
  To: Stephen Berman; +Cc: acm, emacs-devel

> From: Stephen Berman <stephen.berman@gmx.net>
> Cc: acm@muc.de,  emacs-devel@gnu.org
> Date: Fri, 04 Dec 2020 17:03:00 +0100
> 
> > Thanks.  This is very strange.  What are the build options and the
> > features in each build? are they identical?
> 
> emacs-27:
> 
> system-configuration-options
> "'CFLAGS=-Og -g3' PKG_CONFIG_PATH=/opt/qt5/lib/pkgconfig"
> 
> system-configuration-features
> "XPM JPEG TIFF GIF PNG RSVG SOUND DBUS GSETTINGS GLIB NOTIFY INOTIFY ACL
> GNUTLS LIBXML2 FREETYPE HARFBUZZ XFT ZLIB TOOLKIT_SCROLL_BARS GTK3 X11
> XDBE XIM MODULES THREADS LIBSYSTEMD PDUMPER LCMS2 GMP"
> 
> master:
> 
> system-configuration-options
> "--with-xwidgets 'CFLAGS=-Og -g3' PKG_CONFIG_PATH=/opt/qt5/lib/pkgconfig"
> 
> system-configuration-features
> "XPM JPEG TIFF GIF PNG RSVG CAIRO SOUND DBUS GSETTINGS GLIB NOTIFY
> INOTIFY ACL GNUTLS LIBXML2 FREETYPE HARFBUZZ ZLIB TOOLKIT_SCROLL_BARS
> GTK3 X11 XDBE XIM MODULES THREADS XWIDGETS LIBSYSTEMD PDUMPER LCMS2"

Could Cairo be the factor here?  Emacs 27 was built without it.



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

* Re: The Emacs master is much slower than the emacs-27 branch.
  2020-12-04 17:03                       ` Stephen Berman
@ 2020-12-04 17:59                         ` Stephen Berman
  2020-12-04 20:47                           ` Óscar Fuentes
  0 siblings, 1 reply; 74+ messages in thread
From: Stephen Berman @ 2020-12-04 17:59 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: acm, Stefan Monnier, emacs-devel

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

On Fri, 04 Dec 2020 18:03:27 +0100 Stephen Berman <stephen.berman@gmx.net> wrote:

> On Fri, 04 Dec 2020 18:31:48 +0200 Eli Zaretskii <eliz@gnu.org> wrote:
>
>>> From: Stephen Berman <stephen.berman@gmx.net>
>>> Cc: acm@muc.de,  emacs-devel@gnu.org
>>> Date: Fri, 04 Dec 2020 17:03:00 +0100
>>>
>>> > Thanks.  This is very strange.  What are the build options and the
>>> > features in each build? are they identical?
>>>
>>> emacs-27:
>>>
>>> system-configuration-options
>>> "'CFLAGS=-Og -g3' PKG_CONFIG_PATH=/opt/qt5/lib/pkgconfig"
>>>
>>> system-configuration-features
>>> "XPM JPEG TIFF GIF PNG RSVG SOUND DBUS GSETTINGS GLIB NOTIFY INOTIFY ACL
>>> GNUTLS LIBXML2 FREETYPE HARFBUZZ XFT ZLIB TOOLKIT_SCROLL_BARS GTK3 X11
>>> XDBE XIM MODULES THREADS LIBSYSTEMD PDUMPER LCMS2 GMP"
>>>
>>> master:
>>>
>>> system-configuration-options
>>> "--with-xwidgets 'CFLAGS=-Og -g3' PKG_CONFIG_PATH=/opt/qt5/lib/pkgconfig"
>>>
>>> system-configuration-features
>>> "XPM JPEG TIFF GIF PNG RSVG CAIRO SOUND DBUS GSETTINGS GLIB NOTIFY
>>> INOTIFY ACL GNUTLS LIBXML2 FREETYPE HARFBUZZ ZLIB TOOLKIT_SCROLL_BARS
>>> GTK3 X11 XDBE XIM MODULES THREADS XWIDGETS LIBSYSTEMD PDUMPER LCMS2"
>>
>> Could Cairo be the factor here?  Emacs 27 was built without it.
>
> On Fri, 04 Dec 2020 11:49:25 -0500 Stefan Monnier <monnier@iro.umontreal.ca> wrote:
>
>> Hmm... so in Emacs-28, "you" removed XFT and GMP and replaced them with
>> CAIRO and XWIDGETS.
>>
>> I doubt GMP and XWIDGETS make any difference, but maybe XFT or CAIRO
>> have something to do with the difference.
>>
>> It might be worth fiddling with `--with(out)-xft` and
>> `--with(out)-cairo` to see if you can get closer to the origin of
>> the difference.
>
> I can try that, but since I used the default configuration features,
> that suggests that those who got no difference between emacs-27 and
> master with the benchmark, or where emacs-27 was even faster, built
> emacs-27 --with-cairo and --without-xft.  Is that the case?

Well, I went ahead and configured emacs-27 --with-cairo --without-xft,
rebuilt and ran the benchmark, and it still took ~60 seconds.  I've
attached the profile because it is considerably longer than the other
emacs-27 profiles, though in general it seems similar to me, but maybe
an expert will spot a significant difference.

Steve Berman


[-- Attachment #2: profile-27-cairo --]
[-- Type: application/octet-stream, Size: 105632 bytes --]

- command-execute                                               46530  77%
 - call-interactively                                           46530  77%
  - funcall-interactively                                       46271  76%
   - eval-expression                                            46251  76%
    - eval                                                      46251  76%
     - time-scroll                                              46251  76%
      - message                                                 46251  76%
       - let                                                    46251  76%
        - condition-case                                        46251  76%
         - while                                                46249  76%
          - sit-for                                             36806  61%
           - redisplay                                          36723  60%
            - redisplay_internal (C function)                   33478  55%
             - jit-lock-function                                32898  54%
              - jit-lock-fontify-now                            32860  54%
               - jit-lock--run-functions                        32787  54%
                - run-hook-wrapped                              32786  54%
                 - #<compiled 0x90322d>                         32784  54%
                  - font-lock-fontify-region                    32649  54%
                   - c-font-lock-fontify-region                 32603  54%
                    - font-lock-default-fontify-region              30437  50%
                     - font-lock-fontify-keywords-region              29477  48%
                      - c-font-lock-declarations                15439  25%
                       - c-find-decl-spots                      15199  25%
                        - #<compiled 0x9ea4e9>                   9121  15%
                         - c-forward-decl-or-cast-1               3648   6%
                          - c-forward-type                       1764   2%
                             c-forward-name                       420   0%
                             c-check-qualified-type                 41   0%
                             c-forward-sws                         27   0%
                             c-forward-keyword-clause                 16   0%
                             c-add-type                             8   0%
                             #<compiled 0x98677d>                   3   0%
                             #<compiled 0x986791>                   1   0%
                             #<compiled 0x986769>                   1   0%
                          - c-backward-token-2                    340   0%
                             c-beginning-of-current-token                115   0%
                             c-backward-sws                        92   0%
                          - c-forward-sws                         135   0%
                             c-forward-single-comment                  2   0%
                           - c-beginning-of-macro                   1   0%
                              c-backward-single-comment                  1   0%
                          - c-directly-in-class-called-p                 90   0%
                           - c-parse-state                         72   0%
                            - c-parse-state-1                      64   0%
                             - c-append-to-state-cache                 31   0%
                              - c-beginning-of-macro                  9   0%
                                 back-to-indentation                  2   0%
                             - c-remove-stale-state-cache                 24   0%
                              - c-beginning-of-macro                  9   0%
                                 back-to-indentation                  5   0%
                                 #<compiled 0x9d4b01>                  1   0%
                                 c-backward-single-comment                  1   0%
                             - c-parse-state-get-strategy                  6   0%
                              - c-beginning-of-macro                  5   0%
                                 back-to-indentation                  3   0%
                            - c-beginning-of-macro                  8   0%
                               back-to-indentation                  2   0%
                               #<compiled 0x9d4b49>                  1   0%
                           - c-looking-at-decl-block                 18   0%
                            - c-syntactic-skip-backward                 13   0%
                             - c-backward-sws                      10   0%
                                c-beginning-of-macro                  3   0%
                             - c-beginning-of-macro                  2   0%
                                back-to-indentation                  1   0%
                              c-syntactic-re-search-forward                  2   0%
                            - c-backward-sws                        2   0%
                             - c-beginning-of-macro                  2   0%
                                c-backward-single-comment                  2   0%
                          - c-forward-name                         87   0%
                             c-forward-sws                         34   0%
                            c-forward-annotation                   51   0%
                          - c-forward-keyword-clause                 12   0%
                             c-forward-sws                         10   0%
                          - c-backward-sws                          8   0%
                             c-beginning-of-current-token                  4   0%
                            c-on-identifier                         1   0%
                            #<compiled 0x7818a1>                    1   0%
                         - c-get-fontification-context               2058   3%
                          - c-backward-token-2                    480   0%
                             c-backward-sws                       162   0%
                             c-beginning-of-current-token                 46   0%
                          - c-back-over-compound-identifier                462   0%
                             c-on-identifier                      136   0%
                             c-backward-sws                       127   0%
                             c-backward-token-2                    68   0%
                          - c-inside-bracelist-p                  344   0%
                             c-looking-at-inexpr-block                147   0%
                             c-backward-over-enum-header                 91   0%
                             c-looking-at-or-maybe-in-bracelist                 77   0%
                          - c-backward-sws                        260   0%
                             c-beginning-of-current-token                 58   0%
                             c-beginning-of-macro                  25   0%
                          - c-parse-state                          62   0%
                             c-parse-state-1                       32   0%
                             c-beginning-of-macro                  15   0%
                             c-syntactic-end-of-macro                  4   0%
                         - c-forward-label                        944   1%
                          - c-syntactic-re-search-forward                275   0%
                             c-beginning-of-macro                 138   0%
                             #<compiled 0x981c11>                   6   0%
                            c-beginning-of-current-token                144   0%
                          - c-after-conditional                    97   0%
                             c-backward-token-2                    81   0%
                          - c-forward-sws                          80   0%
                           - c-beginning-of-macro                   3   0%
                              c-backward-single-comment                  3   0%
                             c-forward-single-comment                  1   0%
                         - c-font-lock-single-decl                586   0%
                          - c-font-lock-declarators                494   0%
                           - c-do-declarators                     484   0%
                            - c-forward-declarator                312   0%
                             - c-syntactic-re-search-forward                 90   0%
                              - c-beginning-of-macro                 57   0%
                                 back-to-indentation                 14   0%
                                 #<compiled 0x9d4b49>                  4   0%
                                 #<compiled 0x9d4b01>                  1   0%
                                #<compiled 0x981c11>                  3   0%
                             - c-forward-name                      61   0%
                                c-forward-sws                      18   0%
                             - c-backward-sws                      46   0%
                                c-beginning-of-current-token                 14   0%
                              - c-beginning-of-macro                  1   0%
                                 back-to-indentation                  1   0%
                               c-forward-sws                        9   0%
                            - c-forward-token-2                    38   0%
                             - c-forward-over-token-and-ws                 27   0%
                              - c-forward-over-token                 11   0%
                                 c-forward-sws                      4   0%
                                c-forward-sws                      10   0%
                               c-forward-sws                       10   0%
                            - c-syntactic-re-search-forward                 36   0%
                             - c-beginning-of-macro                 17   0%
                                back-to-indentation                  2   0%
                                #<compiled 0x9d4b01>                  1   0%
                              c-forward-sws                        26   0%
                            - #<compiled 0x7c7271>                 12   0%
                             - c-forward-type                       2   0%
                              - c-add-type                          1   0%
                               - c-syntactic-content                  1   0%
                                  c-forward-sws                     1   0%
                          - c-backward-sws                         32   0%
                             c-beginning-of-current-token                 11   0%
                             c-beginning-of-macro                   4   0%
                          - c-determine-limit                      19   0%
                             c-backward-sws                         4   0%
                             c-semi-pp-to-literal                   2   0%
                            c-fontify-recorded-types-and-refs                  9   0%
                         - c-backward-sws                         561   0%
                          - c-beginning-of-macro                  150   0%
                             back-to-indentation                   67   0%
                             #<compiled 0x9d4b49>                   3   0%
                             #<compiled 0x9d4b01>                   2   0%
                             c-backward-single-comment                  1   0%
                         - c-backward-token-2                     333   0%
                            c-beginning-of-current-token                112   0%
                            c-backward-sws                         90   0%
                         - c-syntactic-re-search-forward                  3   0%
                            c-beginning-of-macro                    1   0%
                        - c-bs-at-toplevel-p                     3830   6%
                         - c-brace-stack-at                      3668   6%
                          - c-update-brace-stack                 3467   5%
                             c-syntactic-re-search-forward               2572   4%
                             c-beginning-of-current-token                383   0%
                             match-string-no-properties                 13   0%
                        - c-beginning-of-macro                    676   1%
                           back-to-indentation                    190   0%
                           c-backward-single-comment                130   0%
                           #<compiled 0x9d4b49>                    16   0%
                           #<compiled 0x9d4b01>                     7   0%
                        - c-forward-sws                           246   0%
                           c-forward-single-comment                 20   0%
                         - c-beginning-of-macro                    17   0%
                            c-backward-single-comment                  9   0%
                            back-to-indentation                     3   0%
                        - c-backward-sws                           84   0%
                         - c-beginning-of-macro                    22   0%
                            back-to-indentation                     8   0%
                          c-beginning-of-current-token                 11   0%
                          c-end-of-macro                            2   0%
                         eval                                       5   0%
                         c-skip-comments-and-strings                  1   0%
                      - c-font-lock-cut-off-declarators               4798   7%
                       - c-determine-limit                       1716   2%
                        - c-semi-pp-to-literal                    400   0%
                           c-restore-string-fences                 70   0%
                           c-parse-ps-state-below                   5   0%
                         - c-semi-get-near-cache-entry                  3   0%
                            copy-tree                               1   0%
                         - c-semi-put-near-cache-entry                  3   0%
                            last                                    1   0%
                        - c-determine-limit                       372   0%
                         - c-semi-pp-to-literal                   124   0%
                            c-restore-string-fences                 31   0%
                            c-parse-ps-state-below                  2   0%
                            c-semi-put-near-cache-entry                  1   0%
                            #<compiled 0x66ca65>                    1   0%
                         - c-backward-sws                           7   0%
                          - c-beginning-of-macro                    3   0%
                             c-backward-single-comment                  1   0%
                            c-beginning-of-current-token                  1   0%
                        - c-backward-sws                           92   0%
                         - c-beginning-of-macro                    37   0%
                            back-to-indentation                    15   0%
                            #<compiled 0x9d4b01>                    2   0%
                       - c-back-over-member-initializers               1337   2%
                        - c-parse-state                           575   0%
                         - c-parse-state-1                        404   0%
                          - c-append-to-state-cache                267   0%
                           - c-beginning-of-macro                 156   0%
                              c-backward-single-comment                121   0%
                              back-to-indentation                  16   0%
                          - c-remove-stale-state-cache                 86   0%
                             c-beginning-of-macro                  38   0%
                          - c-parse-state-get-strategy                 21   0%
                             c-beginning-of-macro                  15   0%
                         - c-beginning-of-macro                   156   0%
                            c-backward-single-comment                130   0%
                            back-to-indentation                    14   0%
                         - c-syntactic-end-of-macro                  4   0%
                            c-end-of-macro                          3   0%
                           #<compiled 0x728c51>                     1   0%
                        - c-backward-sws                          381   0%
                         - c-beginning-of-macro                   108   0%
                            back-to-indentation                    43   0%
                            c-backward-single-comment                  2   0%
                            #<compiled 0x9d4b01>                    1   0%
                            #<compiled 0x9d4b49>                    1   0%
                           c-beginning-of-current-token                  2   0%
                        - c-back-over-compound-identifier                 43   0%
                           c-on-identifier                         32   0%
                         - c-backward-sws                           3   0%
                            c-beginning-of-macro                    1   0%
                         - c-backward-token-2                       3   0%
                            c-beginning-of-current-token                  2   0%
                            c-backward-sws                          1   0%
                        - c-just-after-func-arglist-p                 27   0%
                         - c-beginning-of-statement-1                 26   0%
                          - c-crosses-statement-barrier-p                 10   0%
                             c-backward-sws                         5   0%
                             c-at-macro-vsemi-p                     3   0%
                          - c-at-macro-vsemi-p                      4   0%
                             c-backward-sws                         1   0%
                          - c-backward-token-2                      2   0%
                             c-backward-sws                         1   0%
                          - c-backward-sws                          1   0%
                             c-beginning-of-current-token                  1   0%
                        - c-backward-token-2                        1   0%
                           c-beginning-of-current-token                  1   0%
                       - c-parse-state                            581   0%
                        - c-parse-state-1                         569   0%
                         - c-append-lower-brace-pair-to-state-cache                395   0%
                          - c-beginning-of-macro                    8   0%
                             back-to-indentation                    2   0%
                         - c-remove-stale-state-cache-backwards                141   0%
                          - c-state-literal-at                     73   0%
                             c-state-pp-to-literal                 71   0%
                             c-state-safe-place                     1   0%
                          - c-beginning-of-macro                    9   0%
                             back-to-indentation                    4   0%
                             #<compiled 0x9d4b49>                   1   0%
                            c-state-balance-parens-backwards                  5   0%
                         - c-parse-state-get-strategy                 10   0%
                          - c-beginning-of-macro                    8   0%
                             back-to-indentation                    3   0%
                             #<compiled 0x9d4b01>                   1   0%
                         - c-append-to-state-cache                  8   0%
                          - c-beginning-of-macro                    3   0%
                             back-to-indentation                    3   0%
                         - c-remove-stale-state-cache                  7   0%
                          - c-beginning-of-macro                    2   0%
                             back-to-indentation                    1   0%
                        - c-beginning-of-macro                      8   0%
                           back-to-indentation                      3   0%
                       - c-syntactic-skip-backward                311   0%
                        - c-backward-sws                          111   0%
                         - c-beginning-of-macro                    38   0%
                            back-to-indentation                    10   0%
                            #<compiled 0x9d4b01>                    1   0%
                        - c-literal-start                          76   0%
                         - c-semi-pp-to-literal                    73   0%
                            c-parse-ps-state-below                  3   0%
                            c-semi-get-near-cache-entry                  3   0%
                        - c-beginning-of-macro                     51   0%
                           back-to-indentation                     11   0%
                           c-backward-single-comment                 10   0%
                       - c-at-toplevel-p                          119   0%
                        - c-parse-state                            65   0%
                         - c-parse-state-1                         56   0%
                          - c-append-to-state-cache                 25   0%
                           - c-beginning-of-macro                   8   0%
                              back-to-indentation                   2   0%
                          - c-remove-stale-state-cache                 18   0%
                           - c-beginning-of-macro                   9   0%
                              back-to-indentation                   2   0%
                              #<compiled 0x9d4b49>                  1   0%
                          - c-parse-state-get-strategy                  5   0%
                           - c-beginning-of-macro                   4   0%
                              back-to-indentation                   2   0%
                         - c-beginning-of-macro                     5   0%
                            #<compiled 0x9d4b49>                    1   0%
                        - c-search-uplist-for-classkey                 54   0%
                         - c-looking-at-decl-block                 52   0%
                          - c-syntactic-skip-backward                 31   0%
                           - c-backward-sws                        11   0%
                            - c-beginning-of-macro                  3   0%
                               back-to-indentation                  3   0%
                           - c-beginning-of-macro                   8   0%
                              #<compiled 0x9d4b01>                  1   0%
                              c-backward-single-comment                  1   0%
                              back-to-indentation                   1   0%
                           - c-literal-start                        5   0%
                              c-semi-pp-to-literal                  5   0%
                          - c-backward-sws                         10   0%
                           - c-beginning-of-macro                   4   0%
                              c-backward-single-comment                  4   0%
                             c-beginning-of-current-token                  2   0%
                       - c-forward-decl-or-cast-1                  60   0%
                        - c-forward-type                           26   0%
                           c-forward-name                           5   0%
                         - c-check-qualified-type                   2   0%
                          - c-forward-over-compound-identifier                  1   0%
                             c-forward-over-token                   1   0%
                         - c-forward-keyword-clause                  1   0%
                            c-forward-sws                           1   0%
                           #<compiled 0x986791>                     1   0%
                        - c-backward-token-2                        6   0%
                           c-backward-sws                           3   0%
                           c-beginning-of-current-token                  1   0%
                        - c-forward-name                            3   0%
                           c-forward-sws                            1   0%
                          c-forward-sws                             3   0%
                          c-forward-annotation                      1   0%
                       - c-get-fontification-context                 33   0%
                        - c-inside-bracelist-p                     28   0%
                         - c-looking-at-or-maybe-in-bracelist                 12   0%
                          - c-backward-token-2                      7   0%
                           - c-backward-sws                         5   0%
                            - c-beginning-of-macro                  1   0%
                               back-to-indentation                  1   0%
                          - c-backward-sws                          3   0%
                             c-beginning-of-macro                   1   0%
                             c-beginning-of-current-token                  1   0%
                         - c-backward-over-enum-header                  9   0%
                          - c-backward-token-2                      8   0%
                           - c-backward-sws                         5   0%
                              c-beginning-of-macro                  1   0%
                             c-beginning-of-current-token                  2   0%
                         - c-looking-at-inexpr-block                  7   0%
                          - c-backward-sws                          3   0%
                           - c-beginning-of-macro                   2   0%
                              #<compiled 0x9d4b49>                  1   0%
                              back-to-indentation                   1   0%
                        - c-parse-state                             5   0%
                         - c-parse-state-1                          5   0%
                          - c-remove-stale-state-cache                  3   0%
                           - c-beginning-of-macro                   2   0%
                              back-to-indentation                   1   0%
                          - c-parse-state-get-strategy                  1   0%
                             c-beginning-of-macro                   1   0%
                          - c-append-to-state-cache                  1   0%
                           - c-beginning-of-macro                   1   0%
                              back-to-indentation                   1   0%
                       - c-forward-sws                             32   0%
                          c-forward-single-comment                  8   0%
                       - c-font-lock-single-decl                   15   0%
                        - c-font-lock-declarators                   8   0%
                         - c-do-declarators                         8   0%
                          - c-forward-declarator                    7   0%
                             c-backward-sws                         4   0%
                             c-syntactic-re-search-forward                  2   0%
                        - c-backward-sws                            4   0%
                         - c-beginning-of-macro                     2   0%
                            back-to-indentation                     1   0%
                         c-skip-comments-and-strings                  3   0%
                      - c-font-lock-enclosing-decls               3615   6%
                       - c-parse-state                           1620   2%
                        - c-parse-state-1                        1444   2%
                         - c-append-lower-brace-pair-to-state-cache                480   0%
                          - c-beginning-of-macro                   20   0%
                             c-backward-single-comment                  6   0%
                             back-to-indentation                    5   0%
                             #<compiled 0x9d4b01>                   1   0%
                         - c-append-to-state-cache                325   0%
                          - c-beginning-of-macro                   89   0%
                             c-backward-single-comment                 52   0%
                             back-to-indentation                   13   0%
                         - c-remove-stale-state-cache-backwards                310   0%
                          - c-state-literal-at                    137   0%
                             c-state-pp-to-literal                132   0%
                             c-state-safe-place                     1   0%
                          - c-beginning-of-macro                   55   0%
                             c-backward-single-comment                 50   0%
                             back-to-indentation                    3   0%
                            c-state-balance-parens-backwards                 32   0%
                         - c-parse-state-get-strategy                152   0%
                          - c-beginning-of-macro                  144   0%
                             c-backward-single-comment                116   0%
                             back-to-indentation                   11   0%
                             #<compiled 0x9d4b01>                   1   0%
                             #<compiled 0x9d4b49>                   1   0%
                         - c-remove-stale-state-cache                147   0%
                          - c-beginning-of-macro                   94   0%
                             c-backward-single-comment                 58   0%
                             back-to-indentation                   14   0%
                        - c-beginning-of-macro                    156   0%
                           c-backward-single-comment                118   0%
                           back-to-indentation                     14   0%
                           #<compiled 0x9d4b49>                     3   0%
                           #<compiled 0x9d4b01>                     1   0%
                          c-syntactic-end-of-macro                  5   0%
                       - c-determine-limit                       1197   1%
                        - c-determine-limit                       270   0%
                         - c-backward-sws                           8   0%
                            c-beginning-of-current-token                  2   0%
                            c-beginning-of-macro                    1   0%
                         - c-semi-pp-to-literal                     4   0%
                          - c-semi-get-near-cache-entry                  3   0%
                             copy-tree                              1   0%
                        - c-backward-sws                           74   0%
                         - c-beginning-of-macro                    33   0%
                            back-to-indentation                    15   0%
                        - c-semi-pp-to-literal                     24   0%
                         - c-semi-get-near-cache-entry                  7   0%
                            copy-tree                               2   0%
                       - c-syntactic-skip-backward                640   1%
                        - c-literal-start                         289   0%
                         - c-semi-pp-to-literal                   280   0%
                          - c-semi-get-near-cache-entry                  7   0%
                             copy-tree                              2   0%
                          - c-semi-put-near-cache-entry                  4   0%
                             last                                   1   0%
                            c-parse-ps-state-below                  4   0%
                        - c-backward-sws                          180   0%
                         - c-beginning-of-macro                    61   0%
                            back-to-indentation                    25   0%
                            #<compiled 0x9d4b49>                    2   0%
                            #<compiled 0x9d4b01>                    1   0%
                           c-beginning-of-current-token                  1   0%
                        - c-beginning-of-macro                     83   0%
                           back-to-indentation                     31   0%
                           #<compiled 0x9d4b01>                     2   0%
                           c-backward-single-comment                  1   0%
                           #<compiled 0x9d4b49>                     1   0%
                       - c-forward-sws                             55   0%
                          c-forward-single-comment                  7   0%
                        - c-beginning-of-macro                      1   0%
                           c-backward-single-comment                  1   0%
                       - c-bs-at-toplevel-p                         9   0%
                        - c-brace-stack-at                          9   0%
                         - c-update-brace-stack                     9   0%
                          - c-syntactic-re-search-forward                  7   0%
                             c-beginning-of-macro                   1   0%
                         c-skip-comments-and-strings                  2   0%
                      - c-font-lock-complex-decl-prepare               1958   3%
                       - c-parse-state                           1437   2%
                        - c-parse-state-1                        1264   2%
                         - c-append-to-state-cache                638   1%
                          - c-beginning-of-macro                  198   0%
                             c-backward-single-comment                110   0%
                             back-to-indentation                   41   0%
                             #<compiled 0x9d4b49>                   2   0%
                             #<compiled 0x9d4b01>                   2   0%
                          - c-append-lower-brace-pair-to-state-cache                 97   0%
                             c-beginning-of-macro                   1   0%
                         - c-remove-stale-state-cache                417   0%
                          - c-beginning-of-macro                  164   0%
                             c-backward-single-comment                 98   0%
                             back-to-indentation                   27   0%
                             #<compiled 0x9d4b49>                   1   0%
                             #<compiled 0x9d4b01>                   1   0%
                            c-end-of-macro                          4   0%
                         - c-parse-state-get-strategy                167   0%
                          - c-beginning-of-macro                  159   0%
                             c-backward-single-comment                125   0%
                             back-to-indentation                   13   0%
                             #<compiled 0x9d4b49>                   1   0%
                         - c-remove-stale-state-cache-backwards                  1   0%
                          - c-state-literal-at                      1   0%
                             c-state-pp-to-literal                  1   0%
                        - c-beginning-of-macro                    148   0%
                           c-backward-single-comment                120   0%
                           back-to-indentation                     12   0%
                        - c-syntactic-end-of-macro                  6   0%
                           c-end-of-macro                           3   0%
                       - c-backward-sws                           287   0%
                        - c-beginning-of-macro                     75   0%
                           back-to-indentation                     35   0%
                           #<compiled 0x9d4b01>                     2   0%
                           c-backward-single-comment                  2   0%
                           #<compiled 0x9d4b49>                     1   0%
                       - c-beginning-of-macro                     142   0%
                          c-backward-single-comment                115   0%
                          back-to-indentation                       8   0%
                          #<compiled 0x9d4b01>                      1   0%
                         c-skip-comments-and-strings                  3   0%
                      - c-font-lock-enum-tail                    1068   1%
                       - c-parse-state                            821   1%
                        - c-parse-state-1                         657   1%
                         - c-append-to-state-cache                281   0%
                          - c-beginning-of-macro                  157   0%
                             c-backward-single-comment                124   0%
                             back-to-indentation                   11   0%
                             #<compiled 0x9d4b49>                   2   0%
                         - c-remove-stale-state-cache                224   0%
                          - c-beginning-of-macro                  177   0%
                             c-backward-single-comment                123   0%
                             back-to-indentation                   13   0%
                             #<compiled 0x9d4b01>                   1   0%
                         - c-parse-state-get-strategy                130   0%
                          - c-beginning-of-macro                  123   0%
                             c-backward-single-comment                102   0%
                             back-to-indentation                   11   0%
                        - c-beginning-of-macro                    151   0%
                           c-backward-single-comment                114   0%
                           back-to-indentation                     21   0%
                        - c-syntactic-end-of-macro                  2   0%
                           c-end-of-macro                           2   0%
                          #<compiled 0x728c51>                      1   0%
                       - c-backward-over-enum-header                235   0%
                        - c-backward-token-2                      158   0%
                         - c-backward-sws                         111   0%
                          - c-beginning-of-macro                   34   0%
                             c-backward-single-comment                 17   0%
                             back-to-indentation                    9   0%
                             #<compiled 0x9d4b49>                   1   0%
                            c-beginning-of-current-token                 13   0%
                           c-beginning-of-current-token                  6   0%
                          c-on-identifier                           3   0%
                         c-skip-comments-and-strings                  3   0%
                       - c-font-lock-declarators                    2   0%
                        - c-do-declarators                          2   0%
                         - c-forward-sws                            2   0%
                            c-forward-single-comment                  1   0%
                      - c-font-lock-invalid-single-quotes                444   0%
                       - c-literal-limits                         234   0%
                        - c-full-pp-to-literal                    226   0%
                         - c-full-get-near-cache-entry                 10   0%
                          - copy-tree                               9   0%
                             copy-tree                              4   0%
                           c-parse-ps-state-below                   6   0%
                           #<compiled 0x6fa401>                     3   0%
                         - c-full-put-near-cache-entry                  1   0%
                            last                                    1   0%
                        #<compiled 0x7091a1>                      218   0%
                        #<compiled 0x708ce9>                      210   0%
                      - #<compiled 0x70913d>                      206   0%
                         c-forward-sws                              2   0%
                        #<compiled 0x7091e5>                      195   0%
                        #<compiled 0x709205>                      187   0%
                      - #<compiled 0x9ec915>                      160   0%
                       - c-font-lock-doc-comments                 155   0%
                        - c-literal-start                         133   0%
                         - c-semi-pp-to-literal                   127   0%
                            c-parse-ps-state-below                  3   0%
                            c-semi-get-near-cache-entry                  3   0%
                            c-restore-string-fences                  2   0%
                          - c-semi-put-near-cache-entry                  1   0%
                             last                                   1   0%
                      - #<compiled 0x1fee7310ccef>                 39   0%
                         eval                                       1   0%
                      - c-font-lock-enum-body                      37   0%
                       - c-backward-over-enum-header                  4   0%
                        - c-backward-token-2                        2   0%
                         - c-backward-sws                           2   0%
                          - c-beginning-of-macro                    1   0%
                             back-to-indentation                    1   0%
                       - c-font-lock-declarators                    2   0%
                        - c-do-declarators                          2   0%
                           c-forward-sws                            1   0%
                         - c-forward-declarator                     1   0%
                            c-backward-sws                          1   0%
                     - font-lock-fontify-syntactically-region                891   1%
                        syntax-ppss                               595   0%
                        looking-back                               27   0%
                     - font-lock-unfontify-region                   7   0%
                        font-lock-default-unfontify-region                  5   0%
                       font-lock-extend-region-multiline                  1   0%
                    - c-before-context-fl-expand-region               1937   3%
                     - mapc                                      1932   3%
                      - #<compiled 0x8ec2d1>                     1931   3%
                       - c-context-expand-fl-region               1910   3%
                        - c-fl-decl-start                        1333   2%
                         - c-determine-limit                      691   1%
                          - c-semi-pp-to-literal                  157   0%
                             c-restore-string-fences                 26   0%
                             c-semi-get-near-cache-entry                  3   0%
                             c-semi-put-near-cache-entry                  1   0%
                          - c-determine-limit                     155   0%
                             c-semi-pp-to-literal                  52   0%
                             c-backward-sws                         6   0%
                             c-determine-limit                      1   0%
                          - c-backward-sws                         71   0%
                             c-beginning-of-macro                  18   0%
                         - c-syntactic-skip-backward                220   0%
                          - c-backward-sws                         75   0%
                           - c-beginning-of-macro                  25   0%
                              back-to-indentation                   8   0%
                              #<compiled 0x9d4b49>                  3   0%
                              c-backward-single-comment                  2   0%
                             c-beginning-of-current-token                  3   0%
                          - c-literal-start                        52   0%
                             c-semi-pp-to-literal                  49   0%
                          - c-beginning-of-macro                   38   0%
                             back-to-indentation                   11   0%
                             c-backward-single-comment                  4   0%
                         - c-parse-state                          127   0%
                          - c-parse-state-1                       120   0%
                             c-append-lower-brace-pair-to-state-cache                 66   0%
                             c-append-to-state-cache                 28   0%
                             c-remove-stale-state-cache                 20   0%
                             c-parse-state-get-strategy                  1   0%
                          - c-beginning-of-macro                    5   0%
                             back-to-indentation                    3   0%
                             #<compiled 0x9d4b49>                   1   0%
                         - c-literal-start                         88   0%
                          - c-semi-pp-to-literal                   79   0%
                           - c-semi-get-near-cache-entry                  6   0%
                              copy-tree                             2   0%
                             c-restore-string-fences                  5   0%
                             c-semi-put-near-cache-entry                  1   0%
                         - c-cheap-inside-bracelist-p                 54   0%
                          - c-backward-sws                         37   0%
                           - c-beginning-of-macro                  15   0%
                              back-to-indentation                   8   0%
                              #<compiled 0x9d4b49>                  1   0%
                          - c-backward-token-2                      5   0%
                             c-backward-sws                         2   0%
                             c-beginning-of-current-token                  1   0%
                         - c-forward-sws                           28   0%
                          - c-beginning-of-macro                    8   0%
                             c-backward-single-comment                  6   0%
                            c-forward-single-comment                  3   0%
                         - c-backward-sws                          24   0%
                          - c-beginning-of-macro                   14   0%
                             back-to-indentation                    4   0%
                         - c-forward-type                          23   0%
                          - c-check-qualified-type                  5   0%
                           - c-forward-over-compound-identifier                  5   0%
                            - c-forward-over-token                  2   0%
                               c-forward-sws                        2   0%
                              c-on-identifier                       1   0%
                              c-forward-sws                         1   0%
                            c-forward-name                          4   0%
                         - c-looking-at-or-maybe-in-bracelist                 22   0%
                          - c-backward-token-2                     11   0%
                           - c-backward-sws                         8   0%
                            - c-beginning-of-macro                  5   0%
                               back-to-indentation                  1   0%
                               c-backward-single-comment                  1   0%
                          - c-backward-sws                          6   0%
                           - c-beginning-of-macro                   2   0%
                              back-to-indentation                   1   0%
                             c-beginning-of-current-token                  1   0%
                        - c-fl-decl-end                           555   0%
                         - c-literal-start                        392   0%
                          - c-semi-pp-to-literal                  381   0%
                             c-parse-ps-state-below                193   0%
                             c-semi-get-near-cache-entry                 10   0%
                             c-semi-put-near-cache-entry                  1   0%
                             #<compiled 0x66ca65>                   1   0%
                         - c-forward-declarator                    53   0%
                          - c-syntactic-re-search-forward                 17   0%
                           - c-beginning-of-macro                   9   0%
                              back-to-indentation                   2   0%
                              #<compiled 0x9d4b49>                  1   0%
                          - c-backward-sws                         11   0%
                             c-beginning-of-current-token                  6   0%
                          - c-forward-name                          9   0%
                             c-forward-sws                          2   0%
                         - c-backward-sws                          35   0%
                            c-beginning-of-current-token                  5   0%
                            c-beginning-of-macro                    5   0%
                         - c-beginning-of-macro                    19   0%
                            back-to-indentation                     5   0%
                            #<compiled 0x9d4b49>                    1   0%
                         - c-forward-token-2                       18   0%
                          - c-forward-over-token-and-ws                 13   0%
                           - c-forward-over-token                   7   0%
                              c-forward-sws                         5   0%
                           - c-forward-sws                          3   0%
                              c-forward-single-comment                  2   0%
                            c-forward-sws                           2   0%
                           c-on-identifier                          7   0%
                           c-end-of-macro                           1   0%
                    - #<compiled 0x8eca2d>                        190   0%
                       c-clear-string-fences                      171   0%
                      c-restore-string-fences                       3   0%
                  - bug-reference-fontify                         125   0%
                     syntax-ppss                                    6   0%
                     bug-reference-unfontify                        1   0%
               - run-with-timer                                    35   0%
                - apply                                            35   0%
                 - run-at-time                                     32   0%
                  - timer-set-time                                 12   0%
                     timer--time-setter                             7   0%
                    timer-relative-time                            10   0%
                  - timer-activate                                  2   0%
                   - timer--activate                                2   0%
                      timer--time-less-p                            1   0%
                    timer-set-function                              2   0%
                 #<compiled 0x9fdab5>                               1   0%
             - tool-bar-make-keymap                               290   0%
              - tool-bar-make-keymap-1                            278   0%
               - mapcar                                           277   0%
                - #<compiled 0x1fee731283b3>                      265   0%
                 - eval                                           233   0%
                  - find-image                                    232   0%
                     image-search-load-path                       205   0%
                   - cond                                          14   0%
                    - <                                             6   0%
                       display-color-cells                          3   0%
                    - not                                           5   0%
                     - display-color-p                              4   0%
                        display-graphic-p                           4   0%
                     image-type-available-p                         3   0%
                 - display-images-p                                 2   0%
                    display-graphic-p                               1   0%
             - eval                                                74   0%
              - if                                                 49   0%
                 display-graphic-p                                  1   0%
              - unless                                              5   0%
               - if                                                 2   0%
                  display-graphic-p                                 1   0%
              - mode-line-eol-desc                                  5   0%
                 coding-system-eol-type-mnemonic                    1   0%
             - funcall                                             70   0%
              - #<compiled 0x1fee730ecc5f>                         68   0%
               - gui-backend-selection-exists-p                    67   0%
                - apply                                            63   0%
                   #<compiled 0x1fee730e2f0f>                      63   0%
               menu-bar-update-buffers                             48   0%
               file-remote-p                                       22   0%
             - mode-line-default-help-echo                         16   0%
              - window-at-side-p                                   11   0%
               - window-pixel-edges                                 7   0%
                  window-edges                                      4   0%
                minibuffer-window-active-p                          1   0%
             - kill-this-buffer-enabled-p                          16   0%
                buffer-list                                         1   0%
             - keymap-canonicalize                                  5   0%
                map-keymap                                          2   0%
             - and                                                  4   0%
                not                                                 2   0%
             - #<compiled 0x1fee7314a527>                           3   0%
              - apply                                               3   0%
               - redisplay--pre-redisplay-functions                  2   0%
                - run-hook-with-args                                2   0%
                 - redisplay--update-region-highlight                  2   0%
                    #<compiled 0x1fee730e2d95>                      1   0%
           - input-pending-p                                       50   0%
            - timer-event-handler                                  42   0%
             - apply                                               33   0%
                jit-lock-force-redisplay                            9   0%
               cancel-timer-internal                                2   0%
          - if                                                   9437  15%
           - scroll-up                                           7153  11%
            - jit-lock-function                                  7051  11%
             - jit-lock-fontify-now                              7048  11%
              - jit-lock--run-functions                          7046  11%
               - run-hook-wrapped                                7046  11%
                - #<compiled 0xab31d1>                           7046  11%
                 - font-lock-fontify-region                      7036  11%
                  - c-font-lock-fontify-region                   7030  11%
                   - font-lock-default-fontify-region               6846  11%
                    - font-lock-fontify-keywords-region               6772  11%
                     - c-font-lock-declarations                  5179   8%
                      - c-find-decl-spots                        5164   8%
                       - #<compiled 0x9ea4e9>                    3560   5%
                        - c-get-fontification-context               1989   3%
                         - c-inside-bracelist-p                   868   1%
                          - c-looking-at-or-maybe-in-bracelist                555   0%
                           - c-backward-token-2                   362   0%
                            - c-backward-sws                      186   0%
                             - c-beginning-of-macro                 59   0%
                                back-to-indentation                 16   0%
                                c-backward-single-comment                  7   0%
                                #<compiled 0x9d4b01>                  2   0%
                                #<compiled 0x9d4b49>                  1   0%
                               c-beginning-of-current-token                 11   0%
                              c-beginning-of-current-token                 12   0%
                           - c-backward-sws                       186   0%
                            - c-beginning-of-macro                 69   0%
                               back-to-indentation                 24   0%
                               c-backward-single-comment                  8   0%
                               #<compiled 0x9d4b01>                  1   0%
                               #<compiled 0x9d4b49>                  1   0%
                              c-beginning-of-current-token                  7   0%
                             c-beginning-of-statement-1                  3   0%
                             c-forward-to-cpp-define-body                  1   0%
                          - c-backward-over-enum-header                176   0%
                           - c-backward-token-2                   169   0%
                            - c-backward-sws                      120   0%
                             - c-beginning-of-macro                 38   0%
                                back-to-indentation                 13   0%
                                c-backward-single-comment                  8   0%
                                #<compiled 0x9d4b01>                  2   0%
                               c-beginning-of-current-token                  9   0%
                              c-beginning-of-current-token                  7   0%
                             c-on-identifier                        2   0%
                          - c-looking-at-inexpr-block                137   0%
                           - c-backward-sws                       133   0%
                            - c-beginning-of-macro                 54   0%
                               back-to-indentation                 15   0%
                               c-backward-single-comment                 10   0%
                               #<compiled 0x9d4b49>                  1   0%
                              c-beginning-of-current-token                  8   0%
                         - c-parse-state                          656   1%
                          - c-parse-state-1                       647   1%
                           - c-append-to-state-cache                273   0%
                            - c-beginning-of-macro                 63   0%
                               back-to-indentation                 33   0%
                               #<compiled 0x9d4b01>                  1   0%
                              c-append-lower-brace-pair-to-state-cache                 45   0%
                           - c-remove-stale-state-cache                187   0%
                            - c-beginning-of-macro                 62   0%
                               back-to-indentation                 26   0%
                               #<compiled 0x9d4b01>                  2   0%
                               c-backward-single-comment                  2   0%
                              c-end-of-macro                        1   0%
                           - c-parse-state-get-strategy                185   0%
                            - c-get-fallback-scan-pos                152   0%
                             - beginning-of-defun                 152   0%
                              - beginning-of-defun-raw                152   0%
                                 syntax-ppss                      152   0%
                            - c-beginning-of-macro                 29   0%
                               back-to-indentation                 13   0%
                               #<compiled 0x9d4b49>                  1   0%
                               #<compiled 0x9d4b01>                  1   0%
                          - c-beginning-of-macro                    8   0%
                             back-to-indentation                    7   0%
                         - c-back-over-compound-identifier                220   0%
                          - c-backward-token-2                    109   0%
                             c-beginning-of-current-token                 60   0%
                           - c-backward-sws                        43   0%
                              c-beginning-of-current-token                  1   0%
                          - c-backward-sws                         91   0%
                           - c-beginning-of-macro                  72   0%
                              back-to-indentation                  30   0%
                              #<compiled 0x9d4b01>                  3   0%
                              #<compiled 0x9d4b49>                  3   0%
                              c-backward-single-comment                  2   0%
                             c-beginning-of-current-token                  1   0%
                            c-on-identifier                         6   0%
                         - c-backward-token-2                     131   0%
                          - c-backward-sws                        108   0%
                             c-beginning-of-current-token                 77   0%
                           - c-beginning-of-macro                  21   0%
                              c-backward-single-comment                 15   0%
                              back-to-indentation                   3   0%
                            c-beginning-of-current-token                  4   0%
                         - c-backward-sws                          80   0%
                          - c-beginning-of-macro                   51   0%
                             back-to-indentation                   24   0%
                             c-backward-single-comment                 23   0%
                             #<compiled 0x9d4b49>                   2   0%
                             #<compiled 0x9d4b01>                   1   0%
                            c-beginning-of-current-token                  6   0%
                        - c-forward-decl-or-cast-1               1169   1%
                         - c-forward-type                        1049   1%
                          - c-check-qualified-type                705   1%
                           - c-forward-over-compound-identifier                700   1%
                            - c-forward-over-token                305   0%
                               c-forward-sws                      137   0%
                              c-on-identifier                     167   0%
                              c-forward-sws                       119   0%
                          - c-forward-name                        215   0%
                           - c-forward-sws                        186   0%
                              c-forward-single-comment                  1   0%
                          - c-add-type                             31   0%
                           - c-syntactic-content                   30   0%
                              c-forward-sws                         7   0%
                              apply                                 1   0%
                          - c-forward-keyword-clause                 14   0%
                             c-forward-sws                         14   0%
                            c-forward-sws                           2   0%
                            #<compiled 0x986755>                    1   0%
                            #<compiled 0x986791>                    1   0%
                         - c-backward-token-2                      27   0%
                            c-beginning-of-current-token                 11   0%
                            c-backward-sws                          5   0%
                           c-forward-sws                            8   0%
                           c-forward-name                           3   0%
                           c-forward-annotation                     1   0%
                        - c-forward-label                         210   0%
                         - c-after-conditional                    105   0%
                          - c-backward-token-2                    105   0%
                           - c-backward-sws                       104   0%
                            - c-beginning-of-macro                 37   0%
                               back-to-indentation                 15   0%
                               #<compiled 0x9d4b49>                  1   0%
                              c-beginning-of-current-token                  6   0%
                         - c-syntactic-re-search-forward                 69   0%
                          - c-beginning-of-macro                   56   0%
                             back-to-indentation                   37   0%
                             #<compiled 0x9d4b49>                   5   0%
                             #<compiled 0x9d4b01>                   1   0%
                             c-backward-single-comment                  1   0%
                           c-beginning-of-current-token                 15   0%
                           c-forward-sws                            4   0%
                        - c-backward-sws                           67   0%
                         - c-beginning-of-macro                    25   0%
                            c-backward-single-comment                  9   0%
                            back-to-indentation                     3   0%
                        - c-backward-token-2                       35   0%
                           c-beginning-of-current-token                 12   0%
                           c-backward-sws                           9   0%
                        - c-font-lock-single-decl                  30   0%
                         - c-backward-sws                          17   0%
                          - c-beginning-of-macro                   16   0%
                             c-backward-single-comment                 12   0%
                             back-to-indentation                    1   0%
                            c-beginning-of-current-token                  1   0%
                         - c-determine-limit                       12   0%
                          - c-determine-limit                       7   0%
                           - c-semi-pp-to-literal                   1   0%
                              c-semi-get-near-cache-entry                  1   0%
                          - c-backward-sws                          3   0%
                           - c-beginning-of-macro                   3   0%
                              back-to-indentation                   2   0%
                          - c-semi-pp-to-literal                    2   0%
                             c-semi-get-near-cache-entry                  1   0%
                           c-fontify-recorded-types-and-refs                  1   0%
                       - c-bs-at-toplevel-p                      1441   2%
                        - c-brace-stack-at                       1433   2%
                         - c-update-brace-stack                  1420   2%
                          - c-syntactic-re-search-forward               1363   2%
                           - c-beginning-of-macro                1125   1%
                              back-to-indentation                 366   0%
                              #<compiled 0x9d4b01>                 27   0%
                              #<compiled 0x9d4b49>                 24   0%
                             #<compiled 0x981c11>                  25   0%
                             c-end-of-macro                         8   0%
                            c-beginning-of-current-token                 22   0%
                            match-string-no-properties                  1   0%
                       - c-beginning-of-macro                      50   0%
                          c-backward-single-comment                 17   0%
                          back-to-indentation                      11   0%
                          #<compiled 0x9d4b49>                      2   0%
                          #<compiled 0x9d4b01>                      1   0%
                       - c-forward-sws                             22   0%
                        - c-beginning-of-macro                      3   0%
                           c-backward-single-comment                  2   0%
                           back-to-indentation                      1   0%
                       - c-backward-sws                             4   0%
                        - c-beginning-of-macro                      2   0%
                           c-backward-single-comment                  1   0%
                           back-to-indentation                      1   0%
                        c-skip-comments-and-strings                  1   0%
                     - c-font-lock-cut-off-declarators                748   1%
                      - c-back-over-member-initializers                395   0%
                       - c-parse-state                            321   0%
                        - c-parse-state-1                         310   0%
                         - c-remove-stale-state-cache                160   0%
                          - c-beginning-of-macro                  154   0%
                             c-backward-single-comment                128   0%
                             back-to-indentation                   23   0%
                             #<compiled 0x9d4b01>                   1   0%
                         - c-parse-state-get-strategy                141   0%
                          - c-beginning-of-macro                  141   0%
                             c-backward-single-comment                127   0%
                             back-to-indentation                   11   0%
                             #<compiled 0x9d4b49>                   2   0%
                           c-append-to-state-cache                  8   0%
                        - c-beginning-of-macro                     10   0%
                           c-backward-single-comment                 10   0%
                       - c-backward-sws                            26   0%
                        - c-beginning-of-macro                     10   0%
                           c-backward-single-comment                  2   0%
                           back-to-indentation                      1   0%
                           #<compiled 0x9d4b01>                     1   0%
                       - c-just-after-func-arglist-p                 22   0%
                        - c-beginning-of-statement-1                 19   0%
                         - c-crosses-statement-barrier-p                  3   0%
                          - c-backward-sws                          3   0%
                             c-beginning-of-macro                   1   0%
                         - c-punctuation-in                         3   0%
                            c-forward-sws                           2   0%
                           c-at-macro-vsemi-p                       3   0%
                           c-beginning-of-macro                     2   0%
                         - c-backward-sws                           1   0%
                            c-beginning-of-macro                    1   0%
                        - c-forward-decl-or-cast-1                  2   0%
                           c-forward-type                           1   0%
                           c-backward-token-2                       1   0%
                       - c-back-over-compound-identifier                 13   0%
                        - c-backward-sws                            5   0%
                         - c-beginning-of-macro                     4   0%
                            c-backward-single-comment                  1   0%
                          c-on-identifier                           4   0%
                        - c-backward-token-2                        2   0%
                           c-beginning-of-current-token                  2   0%
                         c-backward-token-2                         1   0%
                      - c-determine-limit                         167   0%
                       - c-determine-limit                         66   0%
                        - c-semi-pp-to-literal                     16   0%
                           c-restore-string-fences                  2   0%
                       - c-semi-pp-to-literal                      26   0%
                          c-restore-string-fences                   2   0%
                       - c-backward-sws                             4   0%
                          c-beginning-of-macro                      1   0%
                      - c-parse-state                             107   0%
                       - c-parse-state-1                          107   0%
                        - c-remove-stale-state-cache-backwards                 79   0%
                         - c-state-literal-at                      75   0%
                          - c-state-safe-place                     74   0%
                             c-state-pp-to-literal                 62   0%
                           - c-beginning-of-macro                  12   0%
                              c-backward-single-comment                  9   0%
                            c-state-pp-to-literal                   1   0%
                           c-state-balance-parens-backwards                  1   0%
                          c-append-lower-brace-pair-to-state-cache                 27   0%
                      - c-syntactic-skip-backward                  36   0%
                       - c-beginning-of-macro                      13   0%
                          c-backward-single-comment                  9   0%
                          back-to-indentation                       2   0%
                       - c-backward-sws                            12   0%
                        - c-beginning-of-macro                      3   0%
                           back-to-indentation                      1   0%
                           c-backward-single-comment                  1   0%
                       - c-literal-start                            8   0%
                          c-semi-pp-to-literal                      8   0%
                      - c-font-lock-single-decl                     5   0%
                       - c-font-lock-declarators                    5   0%
                        - c-do-declarators                          5   0%
                         - c-forward-declarator                     5   0%
                          - c-syntactic-re-search-forward                  3   0%
                             c-beginning-of-macro                   2   0%
                          - c-forward-name                          1   0%
                             c-forward-sws                          1   0%
                          - c-backward-sws                          1   0%
                             c-beginning-of-current-token                  1   0%
                      - c-forward-decl-or-cast-1                    3   0%
                         c-forward-type                             3   0%
                      - c-at-toplevel-p                             2   0%
                       - c-parse-state                              2   0%
                        - c-parse-state-1                           1   0%
                           c-append-to-state-cache                  1   0%
                          c-beginning-of-macro                      1   0%
                        c-forward-sws                               1   0%
                     - c-font-lock-enclosing-decls                423   0%
                      - c-parse-state                             246   0%
                       - c-parse-state-1                          237   0%
                        - c-remove-stale-state-cache-backwards                164   0%
                         - c-state-literal-at                     158   0%
                          - c-state-safe-place                    151   0%
                             c-state-pp-to-literal                119   0%
                           - c-beginning-of-macro                  32   0%
                              c-backward-single-comment                 28   0%
                              back-to-indentation                   3   0%
                            c-state-pp-to-literal                   7   0%
                           c-state-balance-parens-backwards                  2   0%
                         - c-beginning-of-macro                     1   0%
                            c-backward-single-comment                  1   0%
                        - c-append-to-state-cache                  28   0%
                         - c-beginning-of-macro                     8   0%
                            c-backward-single-comment                  7   0%
                        - c-parse-state-get-strategy                 16   0%
                         - c-beginning-of-macro                    16   0%
                            c-backward-single-comment                 16   0%
                        - c-remove-stale-state-cache                 13   0%
                         - c-beginning-of-macro                    11   0%
                            c-backward-single-comment                  9   0%
                            back-to-indentation                     1   0%
                          c-append-lower-brace-pair-to-state-cache                 12   0%
                       - c-beginning-of-macro                       9   0%
                          c-backward-single-comment                  8   0%
                      - c-determine-limit                         128   0%
                       - c-determine-limit                         55   0%
                        - c-semi-pp-to-literal                      1   0%
                         - c-semi-get-near-cache-entry                  1   0%
                            copy-tree                               1   0%
                       - c-backward-sws                             9   0%
                        - c-beginning-of-macro                      3   0%
                           back-to-indentation                      1   0%
                           c-backward-single-comment                  1   0%
                       - c-semi-pp-to-literal                       2   0%
                          c-semi-get-near-cache-entry                  1   0%
                      - c-syntactic-skip-backward                  37   0%
                       - c-literal-start                           12   0%
                          c-semi-pp-to-literal                     11   0%
                       - c-backward-sws                            12   0%
                        - c-beginning-of-macro                      3   0%
                           back-to-indentation                      1   0%
                       - c-beginning-of-macro                      10   0%
                          back-to-indentation                       4   0%
                          #<compiled 0x9d4b49>                      1   0%
                      - c-forward-sws                               4   0%
                         c-forward-single-comment                   1   0%
                     - c-font-lock-complex-decl-prepare                150   0%
                      - c-parse-state                             113   0%
                       - c-parse-state-1                          102   0%
                        - c-append-to-state-cache                  42   0%
                         - c-beginning-of-macro                    15   0%
                            c-backward-single-comment                 11   0%
                            back-to-indentation                     3   0%
                        - c-remove-stale-state-cache                 35   0%
                         - c-beginning-of-macro                    13   0%
                            c-backward-single-comment                 11   0%
                            back-to-indentation                     1   0%
                        - c-parse-state-get-strategy                 20   0%
                         - c-beginning-of-macro                    13   0%
                            c-backward-single-comment                 11   0%
                         - c-get-fallback-scan-pos                  6   0%
                          - beginning-of-defun                      6   0%
                           - beginning-of-defun-raw                  6   0%
                              syntax-ppss                           6   0%
                       - c-beginning-of-macro                      11   0%
                          c-backward-single-comment                  7   0%
                          back-to-indentation                       2   0%
                          #<compiled 0x9d4b01>                      1   0%
                      - c-backward-sws                             19   0%
                       - c-beginning-of-macro                       8   0%
                          c-backward-single-comment                  5   0%
                          back-to-indentation                       2   0%
                      - c-beginning-of-macro                       15   0%
                         c-backward-single-comment                 14   0%
                     - c-font-lock-enum-tail                       84   0%
                      - c-parse-state                              70   0%
                       - c-parse-state-1                           57   0%
                        - c-remove-stale-state-cache                 27   0%
                         - c-beginning-of-macro                    18   0%
                            c-backward-single-comment                 14   0%
                            #<compiled 0x9d4b49>                    1   0%
                            back-to-indentation                     1   0%
                        - c-append-to-state-cache                  19   0%
                         - c-beginning-of-macro                    13   0%
                            c-backward-single-comment                  8   0%
                        - c-parse-state-get-strategy                 11   0%
                         - c-beginning-of-macro                    11   0%
                            c-backward-single-comment                 10   0%
                            back-to-indentation                     1   0%
                       - c-beginning-of-macro                      12   0%
                          c-backward-single-comment                  9   0%
                          back-to-indentation                       3   0%
                         #<compiled 0x728c51>                       1   0%
                      - c-backward-over-enum-header                 11   0%
                       - c-backward-token-2                         6   0%
                          c-backward-sws                            4   0%
                        c-skip-comments-and-strings                  1   0%
                     - c-font-lock-invalid-single-quotes                 39   0%
                      - c-literal-limits                           19   0%
                       - c-full-pp-to-literal                      19   0%
                          c-full-get-near-cache-entry                  1   0%
                       #<compiled 0x709205>                        19   0%
                       #<compiled 0x70913d>                        17   0%
                       #<compiled 0x7091a1>                        17   0%
                       #<compiled 0x7091e5>                        13   0%
                       #<compiled 0x708ce9>                         9   0%
                     - #<compiled 0x9ec915>                         9   0%
                      - c-font-lock-doc-comments                    8   0%
                       - c-literal-start                            8   0%
                        - c-semi-pp-to-literal                      8   0%
                         - c-semi-get-near-cache-entry                  1   0%
                            copy-tree                               1   0%
                       c-font-lock-enum-body                        5   0%
                       #<compiled 0x1fee7310ccef>                   3   0%
                    - font-lock-fontify-syntactically-region                 68   0%
                       syntax-ppss                                 40   0%
                       looking-back                                 2   0%
                   - c-before-context-fl-expand-region                162   0%
                    - mapc                                        162   0%
                     - #<compiled 0x8ec2d1>                       161   0%
                      - c-context-expand-fl-region                159   0%
                       - c-fl-decl-start                          119   0%
                        - c-determine-limit                        81   0%
                         - c-determine-limit                       41   0%
                          - c-semi-pp-to-literal                   23   0%
                             c-restore-string-fences                 14   0%
                             c-parse-ps-state-below                  3   0%
                             #<compiled 0x66ca65>                   1   0%
                          - c-backward-sws                          8   0%
                           - c-beginning-of-macro                   6   0%
                              back-to-indentation                   3   0%
                              #<compiled 0x9d4b01>                  1   0%
                              c-backward-single-comment                  1   0%
                             c-beginning-of-current-token                  2   0%
                         - c-backward-sws                          14   0%
                          - c-beginning-of-macro                   12   0%
                             back-to-indentation                    9   0%
                             c-backward-single-comment                  1   0%
                         - c-semi-pp-to-literal                    10   0%
                          - c-semi-get-near-cache-entry                  2   0%
                             copy-tree                              2   0%
                            c-restore-string-fences                  1   0%
                        - c-parse-state                            14   0%
                         - c-parse-state-1                         14   0%
                          - c-append-to-state-cache                  7   0%
                           - c-beginning-of-macro                   6   0%
                              back-to-indentation                   1   0%
                          - c-parse-state-get-strategy                  3   0%
                           - c-beginning-of-macro                   3   0%
                              back-to-indentation                   2   0%
                          - c-remove-stale-state-cache                  3   0%
                             c-beginning-of-macro                   2   0%
                        - c-syntactic-skip-backward                  9   0%
                           c-backward-sws                           4   0%
                         - c-literal-start                          2   0%
                            c-semi-pp-to-literal                    2   0%
                         - c-beginning-of-macro                     1   0%
                            back-to-indentation                     1   0%
                        - c-literal-start                           6   0%
                           c-semi-pp-to-literal                     5   0%
                        - c-forward-type                            3   0%
                           c-forward-name                           1   0%
                        - c-forward-sws                             3   0%
                         - c-beginning-of-macro                     1   0%
                            c-backward-single-comment                  1   0%
                           c-forward-single-comment                  1   0%
                       - c-fl-decl-end                             40   0%
                        - c-literal-start                          29   0%
                         - c-semi-pp-to-literal                    28   0%
                            c-parse-ps-state-below                 18   0%
                          c-beginning-of-macro                      3   0%
                          c-on-identifier                           2   0%
                          c-forward-declarator                      1   0%
                        - c-forward-token-2                         1   0%
                           c-forward-over-token-and-ws                  1   0%
                   - #<compiled 0x8eca2d>                          18   0%
                    - c-clear-string-fences                        14   0%
                       #<compiled 0x7c7601>                         1   0%
                 - bug-reference-fontify                            9   0%
                    syntax-ppss                                     1   0%
                    bug-reference-unfontify                         1   0%
              - run-with-timer                                      1   0%
               - apply                                              1   0%
                  run-at-time                                       1   0%
            - eval                                                 58   0%
               if                                                  40   0%
             - unless                                               3   0%
              - if                                                  1   0%
               - display-graphic-p                                  1   0%
                  framep-on-display                                 1   0%
               mode-line-eol-desc                                   1   0%
              file-remote-p                                        39   0%
   - execute-extended-command                                      20   0%
    - sit-for                                                      14   0%
       redisplay                                                   11   0%
    - command-execute                                               2   0%
     - call-interactively                                           2   0%
      - funcall-interactively                                       2   0%
         profiler-report                                            2   0%
  - byte-code                                                     259   0%
   - read--expression                                             172   0%
    - read-from-minibuffer                                        145   0%
     - command-execute                                             65   0%
      - call-interactively                                         65   0%
       - funcall-interactively                                     65   0%
        - completion-at-point                                      36   0%
         - completion-in-region                                    36   0%
          - completion--in-region                                  36   0%
           - #<compiled 0x98ba99>                                  36   0%
            - apply                                                36   0%
             - #<compiled 0x1fee730da7e1>                          36   0%
              - completion--in-region-1                            36   0%
               - completion--do-completion                         36   0%
                - completion-try-completion                        23   0%
                 - completion--nth-completion                      23   0%
                  - completion--some                               23   0%
                   - #<compiled 0x9003dd>                          23   0%
                      completion-basic-try-completion                 23   0%
                - minibuffer-completion-help                       12   0%
                 - completion-all-completions                       9   0%
                  - completion--nth-completion                      9   0%
                   - completion--some                               9   0%
                    - #<compiled 0x723d71>                          9   0%
                     - completion-basic-all-completions                  9   0%
                      - completion-pcm--all-completions                  9   0%
                       - all-completions                            3   0%
                        - #<compiled 0x1fee730f0b8b>                  3   0%
                           complete-with-action                     3   0%
                   temp-buffer-window-setup                         1   0%
                 - temp-buffer-window-show                          1   0%
                  - display-buffer                                  1   0%
                   - display-buffer-at-bottom                       1   0%
                    - window--display-buffer                        1   0%
                       set-window-buffer                            1   0%
                 - display-completion-list                          1   0%
                  - run-hooks                                       1   0%
                     completion-setup-function                      1   0%
                - minibuffer-hide-completions                       1   0%
                 - bury-buffer                                      1   0%
                  - window--delete                                  1   0%
                     delete-window                                  1   0%
        - minibuffer-complete                                      29   0%
         - completion-in-region                                    29   0%
          - completion--in-region                                  29   0%
           - #<compiled 0xa02d0d>                                  29   0%
            - apply                                                29   0%
             - #<compiled 0x1fee730da7e1>                          29   0%
              - completion--in-region-1                            29   0%
               - completion--do-completion                         29   0%
                - completion-try-completion                        24   0%
                 - completion--nth-completion                      24   0%
                  - completion--some                               24   0%
                   - #<compiled 0xa02d25>                          24   0%
                    - completion-basic-try-completion                 24   0%
                     - try-completion                              24   0%
                      - #<compiled 0x1fee730f0b8b>                 24   0%
                         complete-with-action                      24   0%
                - minibuffer-completion-help                        4   0%
                 - display-completion-list                          2   0%
                  - run-hooks                                       2   0%
                     completion-setup-function                      2   0%
                 - temp-buffer-window-show                          1   0%
                  - display-buffer                                  1   0%
                   - display-buffer-at-bottom                       1   0%
                    - walk-window-tree                              1   0%
                     - walk-window-tree-1                           1   0%
                      - #<compiled 0x6f5eed>                        1   0%
                         window-in-direction                        1   0%
                 - fit-window-to-buffer                             1   0%
                  - window-resize-no-error                          1   0%
                   - window--resizable-p                            1   0%
                    - window--resizable                             1   0%
                     - window-min-delta                             1   0%
                      - window--min-delta-1                         1   0%
                         window-size-fixed-p                        1   0%
                - minibuffer-hide-completions                       1   0%
                 - bury-buffer                                      1   0%
                  - window--delete                                  1   0%
                   - delete-window                                  1   0%
                      window--pixel-to-total                        1   0%
     - timer-event-handler                                         11   0%
      - apply                                                       9   0%
         #<compiled 0x1fee730f820d>                                 5   0%
       - blink-cursor-start                                         2   0%
        - blink-cursor--start-timer                                 1   0%
         - run-with-timer                                           1   0%
          - apply                                                   1   0%
           - run-at-time                                            1   0%
              timer-relative-time                                   1   0%
       - #<compiled 0x1fee7312ce27>                                 2   0%
        - eldoc-print-current-symbol-info                           2   0%
         - #<compiled 0x711225>                                     1   0%
          - apply                                                   1   0%
           - elisp-eldoc-documentation-function                     1   0%
              elisp--fnsym-in-current-sexp                          1   0%
        timer-activate                                              2   0%
     - redisplay_internal (C function)                              4   0%
      - funcall                                                     2   0%
       - #<compiled 0x1fee730ecc5f>                                 2   0%
        - gui-backend-selection-exists-p                            2   0%
         - apply                                                    2   0%
            #<compiled 0x1fee730e2f0f>                              2   0%
        window--adjust-process-windows                              1   0%
      - #<compiled 0x1fee7314a527>                                  1   0%
         apply                                                      1   0%
     - #<compiled 0x6fff11>                                         1   0%
        #<compiled 0x1fee730fb109>                                  1   0%
       clear-minibuffer-message                                     1   0%
       minibuffer-inactive-mode                                     1   0%
   - read-extended-command                                         87   0%
    - completing-read                                              87   0%
     - completing-read-default                                     87   0%
      - read-from-minibuffer                                       63   0%
       - redisplay_internal (C function)                            3   0%
        - eval                                                      2   0%
           if                                                       1   0%
        - funcall                                                   1   0%
         - #<compiled 0x1fee730ecc5f>                               1   0%
          - gui-backend-selection-exists-p                          1   0%
           - apply                                                  1   0%
              #<compiled 0x1fee730e2f0f>                            1   0%
       - timer-event-handler                                        2   0%
        - apply                                                     1   0%
           #<compiled 0x1fee730f820d>                               1   0%
       - frame-windows-min-size                                     1   0%
          window-min-size                                           1   0%
- ...                                                           13697  22%
   Automatic GC                                                 13697  22%
- timer-event-handler                                               4   0%
 - apply                                                            4   0%
    #<compiled 0x1fee730f820d>                                      4   0%
  undefined                                                         2   0%
- redisplay_internal (C function)                                   2   0%
 - #<compiled 0x1fee7314a527>                                       1   0%
  - apply                                                           1   0%
   - redisplay--pre-redisplay-functions                             1   0%
    - run-hook-with-args                                            1   0%
     - redisplay--update-region-highlight                           1   0%
        #<compiled 0x1fee730e2d95>                                  1   0%
- jit-lock--antiblink-post-command                                  1   0%
   syntax-ppss                                                      1   0%
- tooltip-show-help                                                 1   0%
   tooltip-start-delayed-tip                                        1   0%

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

* Re: The Emacs master is much slower than the emacs-27 branch.
  2020-12-04 16:28                     ` Óscar Fuentes
@ 2020-12-04 18:51                       ` Eli Zaretskii
  2020-12-04 21:37                         ` Stephen Berman
  0 siblings, 1 reply; 74+ messages in thread
From: Eli Zaretskii @ 2020-12-04 18:51 UTC (permalink / raw)
  To: Óscar Fuentes; +Cc: emacs-devel

> From: Óscar Fuentes <ofv@wanadoo.es>
> Date: Fri, 04 Dec 2020 17:28:36 +0100
> 
> Stephen Berman <stephen.berman@gmx.net> writes:
> 
> > emacs-27:
> >
> > system-configuration-options
> > "'CFLAGS=-Og -g3' PKG_CONFIG_PATH=/opt/qt5/lib/pkgconfig"
> >
> > system-configuration-features
> > "XPM JPEG TIFF GIF PNG RSVG SOUND DBUS GSETTINGS GLIB NOTIFY INOTIFY ACL
> > GNUTLS LIBXML2 FREETYPE HARFBUZZ XFT ZLIB TOOLKIT_SCROLL_BARS GTK3 X11
> > XDBE XIM MODULES THREADS LIBSYSTEMD PDUMPER LCMS2 GMP"
> >
> > master:
> >
> > system-configuration-options
> > "--with-xwidgets 'CFLAGS=-Og -g3' PKG_CONFIG_PATH=/opt/qt5/lib/pkgconfig"
> >
> > system-configuration-features
> > "XPM JPEG TIFF GIF PNG RSVG CAIRO SOUND DBUS GSETTINGS GLIB NOTIFY
> > INOTIFY ACL GNUTLS LIBXML2 FREETYPE HARFBUZZ ZLIB TOOLKIT_SCROLL_BARS
> > GTK3 X11 XDBE XIM MODULES THREADS XWIDGETS LIBSYSTEMD PDUMPER LCMS2"
> 
> Please correct me if I'm wrong, but overriding CFLAGS means that gcc
> compiles with default optimization level, wich is -O0, hence you are
> comparing unoptimized builds, right?

No, because CFLAGS say -Og in both cases, which means the compiler
uses optimization level slightly lower than -O1.

> In that case, a tiny change on some often-used macro or function can
> make a big difference.

But I see no significant difference in my unoptimized builds of both
branches.



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

* Re: The Emacs master is much slower than the emacs-27 branch.
  2020-12-04 15:51                 ` Eli Zaretskii
  2020-12-04 16:03                   ` Stephen Berman
@ 2020-12-04 19:27                   ` Gregory Heytings via Emacs development discussions.
  2020-12-04 19:34                     ` Stephen Berman
  2020-12-04 19:58                     ` Eli Zaretskii
  1 sibling, 2 replies; 74+ messages in thread
From: Gregory Heytings via Emacs development discussions. @ 2020-12-04 19:27 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: Stephen Berman, acm, emacs-devel


>>> I just rebuilt emacs-27 with "make bootstrap", reran the benchmark, 
>>> and it took ~60 seconds, about a second faster than the previous 
>>> non-bootstrapped build.  The profile is similar to the previous one 
>>> from emacs-27, but I've attached for your perusal anyway.  I'll 
>>> bootstrap master too and run the benchmark there again.
>>
>> On freshly bootstrapped master the benchmark took the same time as 
>> before, ~21 seconds, and the profile looks pretty much the same, so I 
>> haven't attached it, but will send it if you want to see it.
>
> Thanks.  This is very strange.  What are the build options and the 
> features in each build? are they identical?
>

Indeed with CFLAGS='-Og -g3', on my computer (Debian GNU/Linux, GCC 
10.2.0) with 28.0.50 this benchmark takes 25.2 seconds, whereas with 
27.1.50 it takes 67.6 seconds.

I bisected this, and the origin of the regression is commit 
365dad197bac5deec9244fd9c189d23c46c99b31, which changes the default to 
"use 'static' instead of 'extern inline' [in C headers] because 'static' 
typically has better performance for Emacs".  With -Og or -O0, the 
benchmark takes 67 seconds, with -O1 or above (-O2 is the default) it 
takes 25 seconds.

Emacs 28.0.50 uses 'static inline' instead of 'extern inline' again, 
"because 'static inline' has much better performance for Emacs when 
compiled with 'gcc -Og'" (see src/conf_post.h).



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

* Re: The Emacs master is much slower than the emacs-27 branch.
  2020-12-04 19:27                   ` Gregory Heytings via Emacs development discussions.
@ 2020-12-04 19:34                     ` Stephen Berman
  2020-12-04 19:58                     ` Eli Zaretskii
  1 sibling, 0 replies; 74+ messages in thread
From: Stephen Berman @ 2020-12-04 19:34 UTC (permalink / raw)
  To: Gregory Heytings; +Cc: acm, Eli Zaretskii, emacs-devel

On Fri, 04 Dec 2020 19:27:37 +0000 Gregory Heytings <ghe@sdf.org> wrote:

>>>> I just rebuilt emacs-27 with "make bootstrap", reran the benchmark, and it
>>>> took ~60 seconds, about a second faster than the previous non-bootstrapped
>>>> build.  The profile is similar to the previous one from emacs-27, but I've
>>>> attached for your perusal anyway.  I'll bootstrap master too and run the
>>>> benchmark there again.
>>>
>>> On freshly bootstrapped master the benchmark took the same time as before,
>>> ~21 seconds, and the profile looks pretty much the same, so I haven't
>>> attached it, but will send it if you want to see it.
>>
>> Thanks.  This is very strange.  What are the build options and the features
>> in each build? are they identical?
>>
>
> Indeed with CFLAGS='-Og -g3', on my computer (Debian GNU/Linux, GCC 10.2.0)
> with 28.0.50 this benchmark takes 25.2 seconds, whereas with 27.1.50 it takes
> 67.6 seconds.
>
> I bisected this, and the origin of the regression is commit
> 365dad197bac5deec9244fd9c189d23c46c99b31, which changes the default to "use
> 'static' instead of 'extern inline' [in C headers] because 'static' typically
> has better performance for Emacs".  With -Og or -O0, the benchmark takes 67
> seconds, with -O1 or above (-O2 is the default) it takes 25 seconds.
>
> Emacs 28.0.50 uses 'static inline' instead of 'extern inline' again, "because
> 'static inline' has much better performance for Emacs when compiled with 'gcc
> -Og'" (see src/conf_post.h).

Thanks for tracking that down!

Steve Berman



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

* Re: The Emacs master is much slower than the emacs-27 branch.
  2020-12-04 19:27                   ` Gregory Heytings via Emacs development discussions.
  2020-12-04 19:34                     ` Stephen Berman
@ 2020-12-04 19:58                     ` Eli Zaretskii
  2020-12-04 20:33                       ` Gregory Heytings via Emacs development discussions.
  1 sibling, 1 reply; 74+ messages in thread
From: Eli Zaretskii @ 2020-12-04 19:58 UTC (permalink / raw)
  To: Gregory Heytings; +Cc: acm, stephen.berman, emacs-devel

> Date: Fri, 04 Dec 2020 19:27:37 +0000
> From: Gregory Heytings <ghe@sdf.org>
> cc: Stephen Berman <stephen.berman@gmx.net>, acm@muc.de, emacs-devel@gnu.org
> 
> Indeed with CFLAGS='-Og -g3', on my computer (Debian GNU/Linux, GCC 
> 10.2.0) with 28.0.50 this benchmark takes 25.2 seconds, whereas with 
> 27.1.50 it takes 67.6 seconds.
> 
> I bisected this, and the origin of the regression is commit 
> 365dad197bac5deec9244fd9c189d23c46c99b31, which changes the default to 
> "use 'static' instead of 'extern inline' [in C headers] because 'static' 
> typically has better performance for Emacs".  With -Og or -O0, the 
> benchmark takes 67 seconds, with -O1 or above (-O2 is the default) it 
> takes 25 seconds.

Thanks, then I think there''s no issue here, and we can stop wondering
about the difference in performance.



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

* Re: The Emacs master is much slower than the emacs-27 branch.
  2020-12-04 19:58                     ` Eli Zaretskii
@ 2020-12-04 20:33                       ` Gregory Heytings via Emacs development discussions.
  2020-12-04 20:47                         ` Eli Zaretskii
  0 siblings, 1 reply; 74+ messages in thread
From: Gregory Heytings via Emacs development discussions. @ 2020-12-04 20:33 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: stephen.berman, acm, emacs-devel


>> Indeed with CFLAGS='-Og -g3', on my computer (Debian GNU/Linux, GCC 
>> 10.2.0) with 28.0.50 this benchmark takes 25.2 seconds, whereas with 
>> 27.1.50 it takes 67.6 seconds.
>>
>> I bisected this, and the origin of the regression is commit 
>> 365dad197bac5deec9244fd9c189d23c46c99b31, which changes the default to 
>> "use 'static' instead of 'extern inline' [in C headers] because 
>> 'static' typically has better performance for Emacs".  With -Og or -O0, 
>> the benchmark takes 67 seconds, with -O1 or above (-O2 is the default) 
>> it takes 25 seconds.
>
> Thanks, then I think there''s no issue here, and we can stop wondering 
> about the difference in performance.
>

There's no issue indeed, but it might make sense to merge commit 
b9b32074cecb0e0d20cf527eadacbb0b7f5cced9 into emacs-27.



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

* Re: The Emacs master is much slower than the emacs-27 branch.
  2020-12-04 20:33                       ` Gregory Heytings via Emacs development discussions.
@ 2020-12-04 20:47                         ` Eli Zaretskii
  2020-12-04 20:59                           ` Gregory Heytings via Emacs development discussions.
  0 siblings, 1 reply; 74+ messages in thread
From: Eli Zaretskii @ 2020-12-04 20:47 UTC (permalink / raw)
  To: Gregory Heytings; +Cc: acm, stephen.berman, emacs-devel

> Date: Fri, 04 Dec 2020 20:33:21 +0000
> From: Gregory Heytings <ghe@sdf.org>
> cc: stephen.berman@gmx.net, acm@muc.de, emacs-devel@gnu.org
> 
> >> I bisected this, and the origin of the regression is commit 
> >> 365dad197bac5deec9244fd9c189d23c46c99b31, which changes the default to 
> >> "use 'static' instead of 'extern inline' [in C headers] because 
> >> 'static' typically has better performance for Emacs".  With -Og or -O0, 
> >> the benchmark takes 67 seconds, with -O1 or above (-O2 is the default) 
> >> it takes 25 seconds.
> >
> > Thanks, then I think there''s no issue here, and we can stop wondering 
> > about the difference in performance.
> 
> There's no issue indeed, but it might make sense to merge commit 
> b9b32074cecb0e0d20cf527eadacbb0b7f5cced9 into emacs-27.

No, because emacs-27 only receives bugfixes at this time, and safe
ones at that.



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

* Re: The Emacs master is much slower than the emacs-27 branch.
  2020-12-04 17:59                         ` Stephen Berman
@ 2020-12-04 20:47                           ` Óscar Fuentes
  2020-12-04 21:33                             ` Stephen Berman
  0 siblings, 1 reply; 74+ messages in thread
From: Óscar Fuentes @ 2020-12-04 20:47 UTC (permalink / raw)
  To: emacs-devel

Stephen Berman <stephen.berman@gmx.net> writes:

> Well, I went ahead and configured emacs-27 --with-cairo --without-xft,
> rebuilt and ran the benchmark, and it still took ~60 seconds.  I've
> attached the profile because it is considerably longer than the other
> emacs-27 profiles, though in general it seems similar to me, but maybe
> an expert will spot a significant difference.

What happens if you build with CFLAGS='-O2' ?




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

* Re: The Emacs master is much slower than the emacs-27 branch.
  2020-12-04 20:47                         ` Eli Zaretskii
@ 2020-12-04 20:59                           ` Gregory Heytings via Emacs development discussions.
  2020-12-04 21:02                             ` Eli Zaretskii
  0 siblings, 1 reply; 74+ messages in thread
From: Gregory Heytings via Emacs development discussions. @ 2020-12-04 20:59 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: acm, stephen.berman, emacs-devel


>>>> I bisected this, and the origin of the regression is commit 
>>>> 365dad197bac5deec9244fd9c189d23c46c99b31, which changes the default 
>>>> to "use 'static' instead of 'extern inline' [in C headers] because 
>>>> 'static' typically has better performance for Emacs".  With -Og or 
>>>> -O0, the benchmark takes 67 seconds, with -O1 or above (-O2 is the 
>>>> default) it takes 25 seconds.
>>>
>>> Thanks, then I think there''s no issue here, and we can stop wondering 
>>> about the difference in performance.
>>
>> There's no issue indeed, but it might make sense to merge commit 
>> b9b32074cecb0e0d20cf527eadacbb0b7f5cced9 into emacs-27.
>
> No, because emacs-27 only receives bugfixes at this time, and safe ones 
> at that.
>

Well, commit b9b32074cecb0e0d20cf527eadacbb0b7f5cced9 only changes 
'#define EXTERN_INLINE static' into '#define EXTERN_INLINE static inline', 
which seems pretty safe.  That being said, it's not critical, given that 
it only improves compilation with -Og.



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

* Re: The Emacs master is much slower than the emacs-27 branch.
  2020-12-04 20:59                           ` Gregory Heytings via Emacs development discussions.
@ 2020-12-04 21:02                             ` Eli Zaretskii
  2020-12-04 21:20                               ` Gregory Heytings via Emacs development discussions.
  0 siblings, 1 reply; 74+ messages in thread
From: Eli Zaretskii @ 2020-12-04 21:02 UTC (permalink / raw)
  To: Gregory Heytings; +Cc: acm, stephen.berman, emacs-devel

> Date: Fri, 04 Dec 2020 20:59:37 +0000
> From: Gregory Heytings <ghe@sdf.org>
> cc: acm@muc.de, stephen.berman@gmx.net, emacs-devel@gnu.org
> 
> That being said, it's not critical, given that it only improves
> compilation with -Og.

Indeed.



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

* Re: The Emacs master is much slower than the emacs-27 branch.
  2020-12-04 21:02                             ` Eli Zaretskii
@ 2020-12-04 21:20                               ` Gregory Heytings via Emacs development discussions.
  2020-12-05  7:44                                 ` Eli Zaretskii
  0 siblings, 1 reply; 74+ messages in thread
From: Gregory Heytings via Emacs development discussions. @ 2020-12-04 21:20 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: acm, stephen.berman, emacs-devel


>> That being said, it's not critical, given that it only improves 
>> compilation with -Og.
>
> Indeed.
>

Sorry, I meant: it only improves compilation with -Og _and -O0_.  I don't 
know if -O0 is important.



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

* Re: The Emacs master is much slower than the emacs-27 branch.
  2020-12-04 20:47                           ` Óscar Fuentes
@ 2020-12-04 21:33                             ` Stephen Berman
  0 siblings, 0 replies; 74+ messages in thread
From: Stephen Berman @ 2020-12-04 21:33 UTC (permalink / raw)
  To: Óscar Fuentes; +Cc: emacs-devel

On Fri, 04 Dec 2020 21:47:53 +0100 Óscar Fuentes <ofv@wanadoo.es> wrote:

> Stephen Berman <stephen.berman@gmx.net> writes:
>
>> Well, I went ahead and configured emacs-27 --with-cairo --without-xft,
>> rebuilt and ran the benchmark, and it still took ~60 seconds.  I've
>> attached the profile because it is considerably longer than the other
>> emacs-27 profiles, though in general it seems similar to me, but maybe
>> an expert will spot a significant difference.
>
> What happens if you build with CFLAGS='-O2' ?

Gregory Heytings found the answer:

  I bisected this, and the origin of the regression is commit
  365dad197bac5deec9244fd9c189d23c46c99b31, which changes the default to
  "use 'static' instead of 'extern inline' [in C headers] because
  'static' typically has better performance for Emacs".  With -Og or
  -O0, the benchmark takes 67 seconds, with -O1 or above (-O2 is the
  default) it takes 25 seconds.

Steve Berman



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

* Re: The Emacs master is much slower than the emacs-27 branch.
  2020-12-04 18:51                       ` Eli Zaretskii
@ 2020-12-04 21:37                         ` Stephen Berman
  2020-12-05  8:05                           ` Eli Zaretskii
  0 siblings, 1 reply; 74+ messages in thread
From: Stephen Berman @ 2020-12-04 21:37 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: Óscar Fuentes, emacs-devel

On Fri, 04 Dec 2020 20:51:52 +0200 Eli Zaretskii <eliz@gnu.org> wrote:

>> From: Óscar Fuentes <ofv@wanadoo.es>
>> Date: Fri, 04 Dec 2020 17:28:36 +0100
>> 
>> Stephen Berman <stephen.berman@gmx.net> writes:
>> 
>> > emacs-27:
>> >
>> > system-configuration-options
>> > "'CFLAGS=-Og -g3' PKG_CONFIG_PATH=/opt/qt5/lib/pkgconfig"
>> >
>> > system-configuration-features
>> > "XPM JPEG TIFF GIF PNG RSVG SOUND DBUS GSETTINGS GLIB NOTIFY INOTIFY ACL
>> > GNUTLS LIBXML2 FREETYPE HARFBUZZ XFT ZLIB TOOLKIT_SCROLL_BARS GTK3 X11
>> > XDBE XIM MODULES THREADS LIBSYSTEMD PDUMPER LCMS2 GMP"
>> >
>> > master:
>> >
>> > system-configuration-options
>> > "--with-xwidgets 'CFLAGS=-Og -g3' PKG_CONFIG_PATH=/opt/qt5/lib/pkgconfig"
>> >
>> > system-configuration-features
>> > "XPM JPEG TIFF GIF PNG RSVG CAIRO SOUND DBUS GSETTINGS GLIB NOTIFY
>> > INOTIFY ACL GNUTLS LIBXML2 FREETYPE HARFBUZZ ZLIB TOOLKIT_SCROLL_BARS
>> > GTK3 X11 XDBE XIM MODULES THREADS XWIDGETS LIBSYSTEMD PDUMPER LCMS2"
>> 
>> Please correct me if I'm wrong, but overriding CFLAGS means that gcc
>> compiles with default optimization level, wich is -O0, hence you are
>> comparing unoptimized builds, right?
>
> No, because CFLAGS say -Og in both cases, which means the compiler
> uses optimization level slightly lower than -O1.
>
>> In that case, a tiny change on some often-used macro or function can
>> make a big difference.
>
> But I see no significant difference in my unoptimized builds of both
> branches.

Doesn't -O0 mean unoptimized?  But Gregory Heytings said that -O0
suffers the same performance hit as -Og in emacs-27 but not im master,
which your timings seem to contradict.  What am I missing?

Steve Berman



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

* Re: The Emacs master is much slower than the emacs-27 branch.
  2020-12-04 21:20                               ` Gregory Heytings via Emacs development discussions.
@ 2020-12-05  7:44                                 ` Eli Zaretskii
  2020-12-05  8:14                                   ` Gregory Heytings via Emacs development discussions.
  0 siblings, 1 reply; 74+ messages in thread
From: Eli Zaretskii @ 2020-12-05  7:44 UTC (permalink / raw)
  To: Gregory Heytings; +Cc: acm, stephen.berman, emacs-devel

> Date: Fri, 04 Dec 2020 21:20:33 +0000
> From: Gregory Heytings <ghe@sdf.org>
> cc: acm@muc.de, stephen.berman@gmx.net, emacs-devel@gnu.org
> 
> Sorry, I meant: it only improves compilation with -Og _and -O0_.  I don't 
> know if -O0 is important.

Given my measurements (see upthread), the effect on -O0 build is
negligible.  And yes, -O0 _is_ important.



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

* Re: The Emacs master is much slower than the emacs-27 branch.
  2020-12-04 21:37                         ` Stephen Berman
@ 2020-12-05  8:05                           ` Eli Zaretskii
  0 siblings, 0 replies; 74+ messages in thread
From: Eli Zaretskii @ 2020-12-05  8:05 UTC (permalink / raw)
  To: Stephen Berman; +Cc: ofv, emacs-devel

> From: Stephen Berman <stephen.berman@gmx.net>
> Cc: Óscar Fuentes <ofv@wanadoo.es>,  emacs-devel@gnu.org
> Date: Fri, 04 Dec 2020 22:37:59 +0100
> 
> > But I see no significant difference in my unoptimized builds of both
> > branches.
> 
> Doesn't -O0 mean unoptimized?

It does.

> But Gregory Heytings said that -O0 suffers the same performance hit
> as -Og in emacs-27 but not im master, which your timings seem to
> contradict.  What am I missing?

You aren't missing anything.  If Gregory has timings of -O0 builds of
both branches that show a significant effect of this issue, and which
disappear at the bisection point, then there is indeed a strange
contradiction between his and my timings.



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

* Re: The Emacs master is much slower than the emacs-27 branch.
  2020-12-05  7:44                                 ` Eli Zaretskii
@ 2020-12-05  8:14                                   ` Gregory Heytings via Emacs development discussions.
  2020-12-05  8:44                                     ` Gregory Heytings via Emacs development discussions.
                                                       ` (2 more replies)
  0 siblings, 3 replies; 74+ messages in thread
From: Gregory Heytings via Emacs development discussions. @ 2020-12-05  8:14 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: acm, stephen.berman, emacs-devel


>> Sorry, I meant: it only improves compilation with -Og _and -O0_.  I 
>> don't know if -O0 is important.
>
> Given my measurements (see upthread), the effect on -O0 build is 
> negligible.  And yes, -O0 _is_ important.
>

I don't know what happens on your computer (what is your 
platform/compiler?) but on mine (Debian GNU/Linux with the latest Linux 
kernel and the latest GCC) the effect on -O0 is almost the same as on -Og 
for this particular benchmark.  I just tried again on the emacs-27 branch:

-Og: ~67s
-O0: ~63s
-O1: ~26s
-O2: ~18s
-O3: ~17s



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

* Re: The Emacs master is much slower than the emacs-27 branch.
  2020-12-05  8:14                                   ` Gregory Heytings via Emacs development discussions.
@ 2020-12-05  8:44                                     ` Gregory Heytings via Emacs development discussions.
  2020-12-05  9:14                                       ` Eli Zaretskii
  2020-12-05  9:05                                     ` Eli Zaretskii
  2020-12-05  9:23                                     ` martin rudalics
  2 siblings, 1 reply; 74+ messages in thread
From: Gregory Heytings via Emacs development discussions. @ 2020-12-05  8:44 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: acm, stephen.berman, emacs-devel


>>> Sorry, I meant: it only improves compilation with -Og _and -O0_.  I 
>>> don't know if -O0 is important.
>> 
>> Given my measurements (see upthread), the effect on -O0 build is 
>> negligible.  And yes, -O0 _is_ important.
>> 
>
> I don't know what happens on your computer (what is your 
> platform/compiler?) but on mine (Debian GNU/Linux with the latest Linux 
> kernel and the latest GCC) the effect on -O0 is almost the same as on 
> -Og for this particular benchmark.  I just tried again on the emacs-27 
> branch:
>
> -Og: ~67s
> -O0: ~63s
> -O1: ~26s
> -O2: ~18s
> -O3: ~17s
>

I'm sure you'll ask, so to avoid another round: yes, with make bootstrap, 
on a fresh clone.  And I used CLFAGS='-Og -g3', CLFAGS='-O0 -g3', 
CLFAGS='-O1 -g3', CLFAGS='-O2 -g3' and CLFAGS='-O3 -g3'.  If you need 
other timings, feel free to ask.



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

* Re: The Emacs master is much slower than the emacs-27 branch.
  2020-12-05  8:14                                   ` Gregory Heytings via Emacs development discussions.
  2020-12-05  8:44                                     ` Gregory Heytings via Emacs development discussions.
@ 2020-12-05  9:05                                     ` Eli Zaretskii
  2020-12-05  9:23                                     ` martin rudalics
  2 siblings, 0 replies; 74+ messages in thread
From: Eli Zaretskii @ 2020-12-05  9:05 UTC (permalink / raw)
  To: Gregory Heytings; +Cc: acm, stephen.berman, emacs-devel

> Date: Sat, 05 Dec 2020 08:14:24 +0000
> From: Gregory Heytings <ghe@sdf.org>
> cc: acm@muc.de, stephen.berman@gmx.net, emacs-devel@gnu.org
> 
> >> Sorry, I meant: it only improves compilation with -Og _and -O0_.  I 
> >> don't know if -O0 is important.
> >
> > Given my measurements (see upthread), the effect on -O0 build is 
> > negligible.  And yes, -O0 _is_ important.
> >
> 
> I don't know what happens on your computer (what is your 
> platform/compiler?) but on mine (Debian GNU/Linux with the latest Linux 
> kernel and the latest GCC) the effect on -O0 is almost the same as on -Og 
> for this particular benchmark.  I just tried again on the emacs-27 branch:
> 
> -Og: ~67s
> -O0: ~63s
> -O1: ~26s
> -O2: ~18s
> -O3: ~17s

Well, this could be due to the fact that my builds are with
"--enable-checking=yes,glyphs" and --with-wide-int.  I wouldn't expect
any of these to have such a profound effect on the difference between
the two branches, though.

To answer your question: this is GCC 9.2.0 on MS-Windows.

In any case, this is not a bug, and doesn't affect the production
code, so making that change on emacs-27 is out of the question.



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

* Re: The Emacs master is much slower than the emacs-27 branch.
  2020-12-05  8:44                                     ` Gregory Heytings via Emacs development discussions.
@ 2020-12-05  9:14                                       ` Eli Zaretskii
  2020-12-05  9:20                                         ` Eli Zaretskii
  0 siblings, 1 reply; 74+ messages in thread
From: Eli Zaretskii @ 2020-12-05  9:14 UTC (permalink / raw)
  To: Gregory Heytings; +Cc: acm, stephen.berman, emacs-devel

> Date: Sat, 05 Dec 2020 08:44:38 +0000
> From: Gregory Heytings <ghe@sdf.org>
> cc: acm@muc.de, stephen.berman@gmx.net, emacs-devel@gnu.org
> 
> > I don't know what happens on your computer (what is your 
> > platform/compiler?) but on mine (Debian GNU/Linux with the latest Linux 
> > kernel and the latest GCC) the effect on -O0 is almost the same as on 
> > -Og for this particular benchmark.  I just tried again on the emacs-27 
> > branch:
> >
> > -Og: ~67s
> > -O0: ~63s
> > -O1: ~26s
> > -O2: ~18s
> > -O3: ~17s
> >
> 
> I'm sure you'll ask, so to avoid another round: yes, with make bootstrap, 
> on a fresh clone.  And I used CLFAGS='-Og -g3', CLFAGS='-O0 -g3', 
> CLFAGS='-O1 -g3', CLFAGS='-O2 -g3' and CLFAGS='-O3 -g3'.  If you need 
> other timings, feel free to ask.

I wasn't going to ask that, but I would like to point out one more
potential difference: I didn't compare two builds of master before and
after that commit.  Instead, I timed 32-bit builds of the current
emacs-27 and master branches which were both built with the following
optional switches to configure:

  --with-wide-int --with-modules --enable-checking=yes,glyphs 'CFLAGS=-O0 -gdwarf-4 -g3'

Again, I don't expect any of this to matter so dramatically, so this
is just for completeness' sake.



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

* Re: The Emacs master is much slower than the emacs-27 branch.
  2020-12-05  9:14                                       ` Eli Zaretskii
@ 2020-12-05  9:20                                         ` Eli Zaretskii
  2020-12-05  9:33                                           ` Eli Zaretskii
  0 siblings, 1 reply; 74+ messages in thread
From: Eli Zaretskii @ 2020-12-05  9:20 UTC (permalink / raw)
  To: ghe, acm, stephen.berman, emacs-devel

> Date: Sat, 05 Dec 2020 11:14:25 +0200
> From: Eli Zaretskii <eliz@gnu.org>
> Cc: acm@muc.de, stephen.berman@gmx.net, emacs-devel@gnu.org
> 
> I wasn't going to ask that, but I would like to point out one more
> potential difference: I didn't compare two builds of master before and
> after that commit.  Instead, I timed 32-bit builds of the current
> emacs-27 and master branches which were both built with the following
> optional switches to configure:
> 
>   --with-wide-int --with-modules --enable-checking=yes,glyphs 'CFLAGS=-O0 -gdwarf-4 -g3'
> 
> Again, I don't expect any of this to matter so dramatically, so this
> is just for completeness' sake.

And one more nit, again for completeness' sake: in both cases I timed
the scrolling through the master branch version of xdisp.c, not each
branch with its version of xdisp.c.



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

* Re: The Emacs master is much slower than the emacs-27 branch.
  2020-12-05  8:14                                   ` Gregory Heytings via Emacs development discussions.
  2020-12-05  8:44                                     ` Gregory Heytings via Emacs development discussions.
  2020-12-05  9:05                                     ` Eli Zaretskii
@ 2020-12-05  9:23                                     ` martin rudalics
  2020-12-05 12:55                                       ` Gregory Heytings via Emacs development discussions.
  2020-12-05 14:47                                       ` Óscar Fuentes
  2 siblings, 2 replies; 74+ messages in thread
From: martin rudalics @ 2020-12-05  9:23 UTC (permalink / raw)
  To: Gregory Heytings, Eli Zaretskii; +Cc: acm, stephen.berman, emacs-devel

 > I don't know what happens on your computer (what is your platform/compiler?) but on mine (Debian GNU/Linux with the latest Linux kernel and the latest GCC) the effect on -O0 is almost the same as on -Og for this particular benchmark.  I just tried again on the emacs-27 branch:
 >
 > -Og: ~67s
 > -O0: ~63s
 > -O1: ~26s
 > -O2: ~18s
 > -O3: ~17s

So when I want to compare Emacs 27 and Emacs 28 benchmarks, -Og builds
are off limits.  Now can I use O0 builds or do I have to use O1-O3
builds exclusively?

martin



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

* Re: The Emacs master is much slower than the emacs-27 branch.
  2020-12-05  9:20                                         ` Eli Zaretskii
@ 2020-12-05  9:33                                           ` Eli Zaretskii
  2020-12-05 13:50                                             ` Basil L. Contovounesios
  2020-12-05 15:15                                             ` Gregory Heytings via Emacs development discussions.
  0 siblings, 2 replies; 74+ messages in thread
From: Eli Zaretskii @ 2020-12-05  9:33 UTC (permalink / raw)
  To: ghe, acm, stephen.berman; +Cc: emacs-devel

> Date: Sat, 05 Dec 2020 11:20:01 +0200
> From: Eli Zaretskii <eliz@gnu.org>
> 
> > Date: Sat, 05 Dec 2020 11:14:25 +0200
> > From: Eli Zaretskii <eliz@gnu.org>
> > Cc: acm@muc.de, stephen.berman@gmx.net, emacs-devel@gnu.org
> > 
> > I wasn't going to ask that, but I would like to point out one more
> > potential difference: I didn't compare two builds of master before and
> > after that commit.  Instead, I timed 32-bit builds of the current
> > emacs-27 and master branches which were both built with the following
> > optional switches to configure:
> > 
> >   --with-wide-int --with-modules --enable-checking=yes,glyphs 'CFLAGS=-O0 -gdwarf-4 -g3'
> > 
> > Again, I don't expect any of this to matter so dramatically, so this
> > is just for completeness' sake.
> 
> And one more nit, again for completeness' sake: in both cases I timed
> the scrolling through the master branch version of xdisp.c, not each
> branch with its version of xdisp.c.

It occurred to me that the differences in the relative performance
could be due to a different GCC version and/or the effect of inlining
on 32-bit code vs 64-bit code produced by GCC.

In any case, Alan's original report was for optimized builds, and he
observed (although was later unable to reproduce) that Emacs 28 was
slower than Emacs 27.  So the important part of this is to compare the
performance of the optimized (-O2) builds and see if we have any
degradation in Emacs 28 in that case.



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

* Re: The Emacs master is much slower than the emacs-27 branch.
  2020-12-05  9:23                                     ` martin rudalics
@ 2020-12-05 12:55                                       ` Gregory Heytings via Emacs development discussions.
  2020-12-05 13:41                                         ` Eli Zaretskii
  2020-12-05 14:47                                       ` Óscar Fuentes
  1 sibling, 1 reply; 74+ messages in thread
From: Gregory Heytings via Emacs development discussions. @ 2020-12-05 12:55 UTC (permalink / raw)
  To: martin rudalics; +Cc: Eli Zaretskii, acm, stephen.berman, emacs-devel


>> I don't know what happens on your computer (what is your 
>> platform/compiler?) but on mine (Debian GNU/Linux with the latest Linux 
>> kernel and the latest GCC) the effect on -O0 is almost the same as on 
>> -Og for this particular benchmark.  I just tried again on the emacs-27 
>> branch:
>>
>> -Og: ~67s
>> -O0: ~63s
>> -O1: ~26s
>> -O2: ~18s
>> -O3: ~17s
>
> So when I want to compare Emacs 27 and Emacs 28 benchmarks, -Og builds 
> are off limits.  Now can I use O0 builds or do I have to use O1-O3 
> builds exclusively?
>

The emacs-27 branch since commit 365dad197bac5deec9244fd9c189d23c46c99b31 
(Sep 4 2019) is about three times slower (at least on this benchmark, with 
GCC 10.2, on a 64-bit GNU/Linux) than the master branch since commit 
b9b32074cecb0e0d20cf527eadacbb0b7f5cced9 (Apr 7 2020) with -Og and -O0. 
With -O[1-3] it is not.

I'd guess that Eli will merge b9b32074cecb0e0d20cf527eadacbb0b7f5cced9 
into emacs-27 very soon after the Emacs 27.2 release, and this slowdown 
will disappear.



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

* Re: The Emacs master is much slower than the emacs-27 branch.
  2020-12-05 12:55                                       ` Gregory Heytings via Emacs development discussions.
@ 2020-12-05 13:41                                         ` Eli Zaretskii
  2020-12-05 15:17                                           ` Gregory Heytings via Emacs development discussions.
  0 siblings, 1 reply; 74+ messages in thread
From: Eli Zaretskii @ 2020-12-05 13:41 UTC (permalink / raw)
  To: Gregory Heytings; +Cc: rudalics, stephen.berman, emacs-devel, acm

> Date: Sat, 05 Dec 2020 12:55:19 +0000
> From: Gregory Heytings <ghe@sdf.org>
> cc: Eli Zaretskii <eliz@gnu.org>, acm@muc.de, stephen.berman@gmx.net,
>         emacs-devel@gnu.org
> 
> The emacs-27 branch since commit 365dad197bac5deec9244fd9c189d23c46c99b31 
> (Sep 4 2019) is about three times slower (at least on this benchmark, with 
> GCC 10.2, on a 64-bit GNU/Linux) than the master branch since commit 
> b9b32074cecb0e0d20cf527eadacbb0b7f5cced9 (Apr 7 2020) with -Og and -O0. 
> With -O[1-3] it is not.
> 
> I'd guess that Eli will merge b9b32074cecb0e0d20cf527eadacbb0b7f5cced9 
> into emacs-27 very soon after the Emacs 27.2 release

No, this is unlikely to happen.  The emacs-27 branch should only get
safe bugfixes at this time.



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

* Re: The Emacs master is much slower than the emacs-27 branch.
  2020-12-05  9:33                                           ` Eli Zaretskii
@ 2020-12-05 13:50                                             ` Basil L. Contovounesios
  2020-12-05 14:29                                               ` Eli Zaretskii
  2020-12-05 15:15                                             ` Gregory Heytings via Emacs development discussions.
  1 sibling, 1 reply; 74+ messages in thread
From: Basil L. Contovounesios @ 2020-12-05 13:50 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: ghe, acm, stephen.berman, emacs-devel

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

Eli Zaretskii <eliz@gnu.org> writes:

> In any case, Alan's original report was for optimized builds, and he
> observed (although was later unable to reproduce) that Emacs 28 was
> slower than Emacs 27.  So the important part of this is to compare the
> performance of the optimized (-O2) builds and see if we have any
> degradation in Emacs 28 in that case.

Given the following file /tmp/timeit.el based on Alan's benchmark:


[-- Attachment #2: timeit.el --]
[-- Type: application/emacs-lisp, Size: 743 bytes --]

[-- Attachment #3: Type: text/plain, Size: 2488 bytes --]


Byte-compile it:

  $ emacs -Q -batch -f batch-byte-compile /tmp/timeit.el

Load it with each Emacs build four times:

  $ for i in {0..3}; do ./src/emacs -Q -l /tmp/timeit.elc; done

Calculate mean timings:

  $ for t in /tmp/timings*.txt; do awk '{s+=$1}END{print FILENAME,s/NR}' "$t"; done
  /tmp/timings-27.txt 28.3246
  /tmp/timings-28.txt 31.7968

Emacs 27 build info:

  In GNU Emacs 27.1.50 (build 1, x86_64-pc-linux-gnu, X toolkit, cairo version 1.16.0, Xaw3d scroll bars)
   of 2020-12-05 built on thunk
  Repository revision: 6916e7954ab5de5e2dc7b25f165a63396d0e70a0
  Repository branch: emacs-27
  Windowing system distributor 'The X.Org Foundation', version 11.0.12008000
  System Description: Debian GNU/Linux bullseye/sid

  Configured using:
   'configure 'CC=ccache gcc' 'CFLAGS=-O2 -march=native'
   --prefix=/home/blc/.local --program-suffix=27-opt
   --with-x-toolkit=lucid --with-file-notification=yes --with-x
   --with-cairo'

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

Emacs 28 build info:

  In GNU Emacs 28.0.50 (build 1, x86_64-pc-linux-gnu, X toolkit, cairo version 1.16.0, Xaw3d scroll bars)
   of 2020-12-05 built on thunk
  Repository revision: dc39c66d3bb6b1db6af0519659ff154bf6d8a5d1
  Repository branch: master
  Windowing system distributor 'The X.Org Foundation', version 11.0.12008000
  System Description: Debian GNU/Linux bullseye/sid

  Configured using:
   'configure 'CC=ccache gcc' 'CFLAGS=-O2 -march=native' --config-cache
   --prefix=/home/blc/.local --with-x-toolkit=lucid
   --with-file-notification=yes --with-x'

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

Other info:

  value of $LANG: en_IE.UTF-8
  value of $XMODIFIERS: @im=ibus
  locale-coding-system: utf-8-unix

  $ grep 'model name' /proc/cpuinfo | awk -F: 'NR==1{print $2}'
   Intel(R) Core(TM) i5-3230M CPU @ 2.60GHz
  $ grep -c 'model name' /proc/cpuinfo
  4
  $ gcc --version
  gcc (Debian 10.2.0-19) 10.2.0
  $ uname -a
  Linux thunk 5.9.0-4-amd64 #1 SMP Debian 5.9.11-1 (2020-11-27) x86_64 GNU/Linux

HTH,

-- 
Basil

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

* Re: The Emacs master is much slower than the emacs-27 branch.
  2020-12-04 16:49                     ` Stefan Monnier
@ 2020-12-05 14:04                       ` Basil L. Contovounesios
  2020-12-05 14:38                         ` Stefan Monnier
  0 siblings, 1 reply; 74+ messages in thread
From: Basil L. Contovounesios @ 2020-12-05 14:04 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: acm, Eli Zaretskii, Stephen Berman, emacs-devel

Stefan Monnier <monnier@iro.umontreal.ca> writes:

> I doubt GMP and XWIDGETS make any difference

Do emacs-27 and master use different GMP libraries (libgmp vs mini-gmp)?
If so, couldn't this account for minor timing differences?

-- 
Basil



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

* Re: The Emacs master is much slower than the emacs-27 branch.
  2020-12-05 13:50                                             ` Basil L. Contovounesios
@ 2020-12-05 14:29                                               ` Eli Zaretskii
  2020-12-05 14:56                                                 ` Ergus
  0 siblings, 1 reply; 74+ messages in thread
From: Eli Zaretskii @ 2020-12-05 14:29 UTC (permalink / raw)
  To: Basil L. Contovounesios; +Cc: ghe, acm, stephen.berman, emacs-devel

> From: "Basil L. Contovounesios" <contovob@tcd.ie>
> Cc: ghe@sdf.org,  acm@muc.de,  stephen.berman@gmx.net,  emacs-devel@gnu.org
> Date: Sat, 05 Dec 2020 13:50:51 +0000
> 
>   $ for t in /tmp/timings*.txt; do awk '{s+=$1}END{print FILENAME,s/NR}' "$t"; done
>   /tmp/timings-27.txt 28.3246
>   /tmp/timings-28.txt 31.7968

Thanks, so this indicates a 12% slowdown in Emacs 28.  Which isn't too
bad, I guess.



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

* Re: The Emacs master is much slower than the emacs-27 branch.
  2020-12-05 14:04                       ` Basil L. Contovounesios
@ 2020-12-05 14:38                         ` Stefan Monnier
  0 siblings, 0 replies; 74+ messages in thread
From: Stefan Monnier @ 2020-12-05 14:38 UTC (permalink / raw)
  To: Basil L. Contovounesios; +Cc: acm, Eli Zaretskii, Stephen Berman, emacs-devel

>> I doubt GMP and XWIDGETS make any difference
> Do emacs-27 and master use different GMP libraries (libgmp vs mini-gmp)?

Not that I know, no (they both use either libgmp or mini-gmp depending
on availability).

> If so, couldn't this account for minor timing differences?

No, these benchmarks use way too few bignum computations to make
any difference.


        Stefan




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

* Re: The Emacs master is much slower than the emacs-27 branch.
  2020-12-05  9:23                                     ` martin rudalics
  2020-12-05 12:55                                       ` Gregory Heytings via Emacs development discussions.
@ 2020-12-05 14:47                                       ` Óscar Fuentes
  2020-12-05 15:07                                         ` martin rudalics
  2020-12-05 15:08                                         ` Eli Zaretskii
  1 sibling, 2 replies; 74+ messages in thread
From: Óscar Fuentes @ 2020-12-05 14:47 UTC (permalink / raw)
  To: emacs-devel

martin rudalics <rudalics@gmx.at> writes:

>> I don't know what happens on your computer (what is your
>> platform/compiler?) but on mine (Debian GNU/Linux with the latest
>> Linux kernel and the latest GCC) the effect on -O0 is almost the
>> same as on -Og for this particular benchmark. I just tried again on
>> the emacs-27 branch:
>>
>> -Og: ~67s
>> -O0: ~63s
>> -O1: ~26s
>> -O2: ~18s
>> -O3: ~17s
>
> So when I want to compare Emacs 27 and Emacs 28 benchmarks, -Og builds
> are off limits.  Now can I use O0 builds or do I have to use O1-O3
> builds exclusively?

-Og is the recommended setting for the edit/build/debug cycle [1],
because it *improves* debug info accuracy over -O0 *and* also runs
faster, which is a significant bonus. So IMHO it is a good thing to not
regress -Og too much. -O0, on the other hand, shouldn't be a concern.

1. https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html




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

* Re: The Emacs master is much slower than the emacs-27 branch.
  2020-12-05 14:29                                               ` Eli Zaretskii
@ 2020-12-05 14:56                                                 ` Ergus
  2020-12-05 15:14                                                   ` Eli Zaretskii
  0 siblings, 1 reply; 74+ messages in thread
From: Ergus @ 2020-12-05 14:56 UTC (permalink / raw)
  To: Eli Zaretskii
  Cc: Basil L. Contovounesios, ghe, acm, stephen.berman, emacs-devel

On Sat, Dec 05, 2020 at 04:29:02PM +0200, Eli Zaretskii wrote:
>> From: "Basil L. Contovounesios" <contovob@tcd.ie>
>> Cc: ghe@sdf.org,  acm@muc.de,  stephen.berman@gmx.net,  emacs-devel@gnu.org
>> Date: Sat, 05 Dec 2020 13:50:51 +0000
>>
>>   $ for t in /tmp/timings*.txt; do awk '{s+=$1}END{print FILENAME,s/NR}' "$t"; done
>>   /tmp/timings-27.txt 28.3246
>>   /tmp/timings-28.txt 31.7968
>
>Thanks, so this indicates a 12% slowdown in Emacs 28.

>Which isn't too bad, I guess.
>
IMHO it depends. If we know the source of the slowdown (for example, a
change introduced like using a new library, a new mode enabled, changes
in rendering/display engine or so) and the change worth it, then maybe
12% is absolutely fine.

But if the slowdown is somehow "unjustified" then 12% is not negligible
at all. Because It could be produced by wrong assumptions and get worth
in the future and harder to detect (like for example excessive GC, extra
redisplay, bad optimizations).

The best approach is maybe what Gregory did. Bisect the history to find
the source of the slowdown.

Actually in my work we have a log where we register the changes and the
commits hashes that impacted performance more than 5-7% either to
improve or degrade it.

Best,
Ergus



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

* Re: The Emacs master is much slower than the emacs-27 branch.
  2020-12-05 14:47                                       ` Óscar Fuentes
@ 2020-12-05 15:07                                         ` martin rudalics
  2020-12-05 15:24                                           ` Gregory Heytings via Emacs development discussions.
  2020-12-05 15:08                                         ` Eli Zaretskii
  1 sibling, 1 reply; 74+ messages in thread
From: martin rudalics @ 2020-12-05 15:07 UTC (permalink / raw)
  To: Óscar Fuentes, emacs-devel

 > -Og is the recommended setting for the edit/build/debug cycle [1],
 > because it *improves* debug info accuracy over -O0 *and* also runs
 > faster, which is a significant bonus. So IMHO it is a good thing to not
 > regress -Og too much. -O0, on the other hand, shouldn't be a concern.
 >
 > 1. https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html

Apparently I currently can't use -Og when comparing benchmarks of older
Emacsen with Emacs 28 ones because the former don't use static inlines.
I just wanted to know whether -O0 builds of Emacs 28 are also affected
by Paul's change because it's those I use for debugging.  Neither -O0
nor -Og builds are useful for normal editing here.

martin



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

* Re: The Emacs master is much slower than the emacs-27 branch.
  2020-12-05 14:47                                       ` Óscar Fuentes
  2020-12-05 15:07                                         ` martin rudalics
@ 2020-12-05 15:08                                         ` Eli Zaretskii
  1 sibling, 0 replies; 74+ messages in thread
From: Eli Zaretskii @ 2020-12-05 15:08 UTC (permalink / raw)
  To: Óscar Fuentes; +Cc: emacs-devel

> From: Óscar Fuentes <ofv@wanadoo.es>
> Date: Sat, 05 Dec 2020 15:47:32 +0100
> 
> -Og is the recommended setting for the edit/build/debug cycle [1],
> because it *improves* debug info accuracy over -O0 *and* also runs
> faster, which is a significant bonus. So IMHO it is a good thing to not
> regress -Og too much. -O0, on the other hand, shouldn't be a concern.

Actually, my experience is that during development one should use -O0,
since even -Og sometimes messes up the code and backtrace so much that
GDB is unable to show variables or produce a reasonably accurate
backtrace.

But of course -O2 is of the main concern when slowdown is reported.

FWIW, I think the "original sin" here is the preference of inline
functions to C macros.  We would never have such problems if we
continued to use old and time-proven macros instead of converting a
large portion of them to inline functions, which caused us portability
problems and this issue, among others.



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

* Re: The Emacs master is much slower than the emacs-27 branch.
  2020-12-05 14:56                                                 ` Ergus
@ 2020-12-05 15:14                                                   ` Eli Zaretskii
  2020-12-05 15:29                                                     ` Andrea Corallo via Emacs development discussions.
  0 siblings, 1 reply; 74+ messages in thread
From: Eli Zaretskii @ 2020-12-05 15:14 UTC (permalink / raw)
  To: Ergus; +Cc: contovob, ghe, stephen.berman, emacs-devel, acm

> Date: Sat, 5 Dec 2020 15:56:22 +0100
> From: Ergus <spacibba@aol.com>
> Cc: "Basil L. Contovounesios" <contovob@tcd.ie>, ghe@sdf.org, acm@muc.de,
> 	stephen.berman@gmx.net, emacs-devel@gnu.org
> 
> The best approach is maybe what Gregory did. Bisect the history to find
> the source of the slowdown.

Sure, if someone can afford that, it would be nice to know.  Assuming
a single commit causes it, that is (it could be several commits
instead, each one slowing down Emacs by a few percents).

When I said "not too bad", it didn't mean we should disregard it, just
that it's much less than Alan originally reported, which would be
alarming.

> Actually in my work we have a log where we register the changes and the
> commits hashes that impacted performance more than 5-7% either to
> improve or degrade it.

That requires to have a representative test suite which to use for
such benchmarking.  For Emacs this is not easy; for example, no one
said that Alan's benchmark is representative of what Emacs does most
of the time in "normal" usage.

Personally, I don't think we should even try to come up with single
benchmark.  We should instead have several, and make sure we
understand and/or fix slowdown in any one of them.  Volunteers are
welcome to work on a suite of such benchmarks, we could then put them
under test/ somewhere.



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

* Re: The Emacs master is much slower than the emacs-27 branch.
  2020-12-05  9:33                                           ` Eli Zaretskii
  2020-12-05 13:50                                             ` Basil L. Contovounesios
@ 2020-12-05 15:15                                             ` Gregory Heytings via Emacs development discussions.
  2020-12-05 15:31                                               ` Óscar Fuentes
  1 sibling, 1 reply; 74+ messages in thread
From: Gregory Heytings via Emacs development discussions. @ 2020-12-05 15:15 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: acm, stephen.berman, emacs-devel


>
> It occurred to me that the differences in the relative performance could 
> be due to a different GCC version and/
>

GCC is not the problem here, I just ran the same benchmark with Emacs 27 
compiled with different versions of GCC:

     | GCC 8.4 | GCC 9.3 | GCC 10.2 |
-Og |    ~67s |    ~68s |     ~67s |
-O0 |    ~63s |    ~63s |     ~63s |
-O1 |    ~26s |    ~27s |     ~26s |
-O2 |    ~18s |    ~18s |     ~18s |
-O3 |    ~18s |    ~17s |     ~17s |

>
> or the effect of inlining on 32-bit code vs 64-bit code produced by GCC.
>

That's possible indeed.



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

* Re: The Emacs master is much slower than the emacs-27 branch.
  2020-12-05 13:41                                         ` Eli Zaretskii
@ 2020-12-05 15:17                                           ` Gregory Heytings via Emacs development discussions.
  2020-12-05 15:55                                             ` Eli Zaretskii
  0 siblings, 1 reply; 74+ messages in thread
From: Gregory Heytings via Emacs development discussions. @ 2020-12-05 15:17 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: rudalics, stephen.berman, emacs-devel, acm


>> I'd guess that Eli will merge b9b32074cecb0e0d20cf527eadacbb0b7f5cced9 
>> into emacs-27 very soon after the Emacs 27.2 release
>
> No, this is unlikely to happen.  The emacs-27 branch should only get 
> safe bugfixes at this time.
>

I did not know that an Emacs 27.3 release was not planned.  In that case, 
the emacs-27 branch will forever remain slower with -Og and -O0 (at least 
on GNU/Linux 64-bit platforms with GCC).



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

* Re: The Emacs master is much slower than the emacs-27 branch.
  2020-12-05 15:07                                         ` martin rudalics
@ 2020-12-05 15:24                                           ` Gregory Heytings via Emacs development discussions.
  2020-12-05 15:36                                             ` martin rudalics
  0 siblings, 1 reply; 74+ messages in thread
From: Gregory Heytings via Emacs development discussions. @ 2020-12-05 15:24 UTC (permalink / raw)
  To: martin rudalics; +Cc: Óscar Fuentes, emacs-devel


>
> Apparently I currently can't use -Og when comparing benchmarks of older 
> Emacsen with Emacs 28 ones because the former don't use static inlines. 
> I just wanted to know whether -O0 builds of Emacs 28 are also affected 
> by Paul's change because it's those I use for debugging.
>

No they are not.  As I told you in my previous mail, commit 
b9b32074cecb0e0d20cf527eadacbb0b7f5cced9 (Apr 7 2020) restores static 
inlines in the master branch.

In short:

before commit 365dad197bac5deec9244fd9c189d23c46c99b31 (Sep 4 2019) 
'extern inline' was the default; this includes Emacs 26 releases

after commit 365dad197bac5deec9244fd9c189d23c46c99b31 'static' became the 
default; this affects Emacs 27.1 and 27.2

after commit b9b32074cecb0e0d20cf527eadacbb0b7f5cced9 'static inline' 
became the default; this will be the default for Emacs 28



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

* Re: The Emacs master is much slower than the emacs-27 branch.
  2020-12-05 15:14                                                   ` Eli Zaretskii
@ 2020-12-05 15:29                                                     ` Andrea Corallo via Emacs development discussions.
  0 siblings, 0 replies; 74+ messages in thread
From: Andrea Corallo via Emacs development discussions. @ 2020-12-05 15:29 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: Ergus, contovob, ghe, stephen.berman, emacs-devel, acm

Eli Zaretskii <eliz@gnu.org> writes:

> Personally, I don't think we should even try to come up with single
> benchmark.  We should instead have several, and make sure we
> understand and/or fix slowdown in any one of them.  Volunteers are
> welcome to work on a suite of such benchmarks, we could then put them
> under test/ somewhere.

We already have something like:

<https://elpa.gnu.org/packages/elisp-benchmarks.html>

It would be nice to extend it and maybe have it in core.

  Andrea



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

* Re: The Emacs master is much slower than the emacs-27 branch.
  2020-12-05 15:15                                             ` Gregory Heytings via Emacs development discussions.
@ 2020-12-05 15:31                                               ` Óscar Fuentes
  0 siblings, 0 replies; 74+ messages in thread
From: Óscar Fuentes @ 2020-12-05 15:31 UTC (permalink / raw)
  To: emacs-devel

Gregory Heytings via "Emacs development discussions."
<emacs-devel@gnu.org> writes:

>>
>> It occurred to me that the differences in the relative performance
>> could be due to a different GCC version and/
>>
>
> GCC is not the problem here, I just ran the same benchmark with Emacs
> 27 compiled with different versions of GCC:
>
>     | GCC 8.4 | GCC 9.3 | GCC 10.2 |
> -Og |    ~67s |    ~68s |     ~67s |
> -O0 |    ~63s |    ~63s |     ~63s |
> -O1 |    ~26s |    ~27s |     ~26s |
> -O2 |    ~18s |    ~18s |     ~18s |
> -O3 |    ~18s |    ~17s |     ~17s |
>
>>
>> or the effect of inlining on 32-bit code vs 64-bit code produced by GCC.
>>
>
> That's possible indeed.

In case you are discussing the origin of the problem, it is clear to me
that it is related to -Og and changing "extern inline" to "static",
which has an impact due to -finline-functions-called-once being disabled
at -Og because those functions are not inlined anymore.




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

* Re: The Emacs master is much slower than the emacs-27 branch.
  2020-12-05 15:24                                           ` Gregory Heytings via Emacs development discussions.
@ 2020-12-05 15:36                                             ` martin rudalics
  2020-12-05 15:39                                               ` Gregory Heytings via Emacs development discussions.
  0 siblings, 1 reply; 74+ messages in thread
From: martin rudalics @ 2020-12-05 15:36 UTC (permalink / raw)
  To: Gregory Heytings; +Cc: Óscar Fuentes, emacs-devel

 >> I just wanted to know whether -O0 builds of Emacs 28 are also affected by Paul's change because it's those I use for debugging.
 >
 >
 >
 > No they are not.  As I told you in my previous mail, commit b9b32074cecb0e0d20cf527eadacbb0b7f5cced9 (Apr 7 2020) restores static inlines in the master branch.
 >
 > In short:
 >
 > before commit 365dad197bac5deec9244fd9c189d23c46c99b31 (Sep 4 2019) 'extern inline' was the default; this includes Emacs 26 releases
 >
 > after commit 365dad197bac5deec9244fd9c189d23c46c99b31 'static' became the default; this affects Emacs 27.1 and 27.2
 >
 > after commit b9b32074cecb0e0d20cf527eadacbb0b7f5cced9 'static inline' became the default; this will be the default for Emacs 28

Sorry.  I'm still too dumb to understand so I ask the following instead:

(1) I can always compare -O1, -O2 and -O3 builds because these were
     _not_ affected by Paul's changes.  Right?

(2) I cannot compare -Og builds because these _are_ affected by Paul's
     changes.  At least Emacs 27 vs Emacs non-27 ones.  Right?

(3) I'm yet unsure about -O0 builds.  Are they (1)- or (2)-like?

martin



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

* Re: The Emacs master is much slower than the emacs-27 branch.
  2020-12-05 15:36                                             ` martin rudalics
@ 2020-12-05 15:39                                               ` Gregory Heytings via Emacs development discussions.
  2020-12-05 15:47                                                 ` Óscar Fuentes
  2020-12-05 15:57                                                 ` Eli Zaretskii
  0 siblings, 2 replies; 74+ messages in thread
From: Gregory Heytings via Emacs development discussions. @ 2020-12-05 15:39 UTC (permalink / raw)
  To: martin rudalics; +Cc: Óscar Fuentes, emacs-devel


>
> Sorry.  I'm still too dumb to understand
>

No, you are definitely not! :-)

>
> so I ask the following instead:
>
> (1) I can always compare -O1, -O2 and -O3 builds because these were 
> _not_ affected by Paul's changes.  Right?
>

Yes.

>
> (2) I cannot compare -Og builds because these _are_ affected by Paul's 
> changes.  At least Emacs 27 vs Emacs non-27 ones.  Right?
>

Yes.

>
> (3) I'm yet unsure about -O0 builds.  Are they (1)- or (2)-like?
>

Like (2), at least with GCC on 64-bit GNU/Linux.  Apparently Eli does not 
see this on MS-Windows.



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

* Re: The Emacs master is much slower than the emacs-27 branch.
  2020-12-05 15:39                                               ` Gregory Heytings via Emacs development discussions.
@ 2020-12-05 15:47                                                 ` Óscar Fuentes
  2020-12-05 17:21                                                   ` Gregory Heytings via Emacs development discussions.
  2020-12-05 15:57                                                 ` Eli Zaretskii
  1 sibling, 1 reply; 74+ messages in thread
From: Óscar Fuentes @ 2020-12-05 15:47 UTC (permalink / raw)
  To: emacs-devel

Gregory Heytings via "Emacs development discussions."
<emacs-devel@gnu.org> writes:

>>
>> Sorry.  I'm still too dumb to understand
>>
>
> No, you are definitely not! :-)
>
>>
>> so I ask the following instead:
>>
>> (1) I can always compare -O1, -O2 and -O3 builds because these were
>> _not_ affected by Paul's changes.  Right?
>>
>
> Yes.
>
>>
>> (2) I cannot compare -Og builds because these _are_ affected by
>> Paul's changes.  At least Emacs 27 vs Emacs non-27 ones.  Right?
>>
>
> Yes.
>
>>
>> (3) I'm yet unsure about -O0 builds.  Are they (1)- or (2)-like?
>>
>
> Like (2), at least with GCC on 64-bit GNU/Linux.  Apparently Eli does
> not see this on MS-Windows.

-O0 does not observe the "inline" declaration nor does consider "static"
functions for inlining, so -O0 should be comparable among versions,
since the "extern inline" -> "static" -> "static inline" changes are not
considered by -O0.




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

* Re: The Emacs master is much slower than the emacs-27 branch.
  2020-12-05 15:17                                           ` Gregory Heytings via Emacs development discussions.
@ 2020-12-05 15:55                                             ` Eli Zaretskii
  0 siblings, 0 replies; 74+ messages in thread
From: Eli Zaretskii @ 2020-12-05 15:55 UTC (permalink / raw)
  To: Gregory Heytings; +Cc: rudalics, stephen.berman, acm, emacs-devel

> Date: Sat, 05 Dec 2020 15:17:34 +0000
> From: Gregory Heytings <ghe@sdf.org>
> cc: rudalics@gmx.at, stephen.berman@gmx.net, emacs-devel@gnu.org, acm@muc.de
> 
> >> I'd guess that Eli will merge b9b32074cecb0e0d20cf527eadacbb0b7f5cced9 
> >> into emacs-27 very soon after the Emacs 27.2 release
> >
> > No, this is unlikely to happen.  The emacs-27 branch should only get 
> > safe bugfixes at this time.
> 
> I did not know that an Emacs 27.3 release was not planned.

I didn't say it wasn't.  (We won't consider whether 27.3 should be
released until some time after releasing 27.2, based on the bugs and
regressions that will still be reported against the emacs-27 branch.)
However, whether there will be Emacs 27.3 or not, the emacs-27 branch,
like any other release branch, should only get changes that fix bugs
and aren't too risky (i.e. cannot cause additional bugs/issues).

> In that case, the emacs-27 branch will forever remain slower with
> -Og and -O0 (at least on GNU/Linux 64-bit platforms with GCC).

Yes.  And that is not so bad, given that your timings indicate Emacs
27.1 compiled with optimizations is better than Emacs 25 and only
slightly slower than Emacs 26.



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

* Re: The Emacs master is much slower than the emacs-27 branch.
  2020-12-05 15:39                                               ` Gregory Heytings via Emacs development discussions.
  2020-12-05 15:47                                                 ` Óscar Fuentes
@ 2020-12-05 15:57                                                 ` Eli Zaretskii
  2020-12-05 16:04                                                   ` Gregory Heytings via Emacs development discussions.
  1 sibling, 1 reply; 74+ messages in thread
From: Eli Zaretskii @ 2020-12-05 15:57 UTC (permalink / raw)
  To: Gregory Heytings; +Cc: ofv, rudalics, emacs-devel

> Date: Sat, 05 Dec 2020 15:39:51 +0000
> cc: Óscar Fuentes <ofv@wanadoo.es>, emacs-devel@gnu.org
> From: Gregory Heytings via "Emacs development discussions." <emacs-devel@gnu.org>
> 
> 
> Like (2), at least with GCC on 64-bit GNU/Linux.  Apparently Eli does not 
> see this on MS-Windows.

I'd be surprised if the OS had anything to do with that.  If someone
can afford compiling a 32-bit build --with-wide-int on GNU/Linux using
GCC 9 or later, we could see for sure.



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

* Re: The Emacs master is much slower than the emacs-27 branch.
  2020-12-05 15:57                                                 ` Eli Zaretskii
@ 2020-12-05 16:04                                                   ` Gregory Heytings via Emacs development discussions.
  0 siblings, 0 replies; 74+ messages in thread
From: Gregory Heytings via Emacs development discussions. @ 2020-12-05 16:04 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: ofv, rudalics, emacs-devel


>> Like (2), at least with GCC on 64-bit GNU/Linux.  Apparently Eli does 
>> not see this on MS-Windows.
>
> I'd be surprised if the OS had anything to do with that.  If someone can 
> afford compiling a 32-bit build --with-wide-int on GNU/Linux using GCC 9 
> or later, we could see for sure.
>

Yes, I should have written: "on 32-bit MS-Windows".



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

* Re: The Emacs master is much slower than the emacs-27 branch.
  2020-12-05 15:47                                                 ` Óscar Fuentes
@ 2020-12-05 17:21                                                   ` Gregory Heytings via Emacs development discussions.
  0 siblings, 0 replies; 74+ messages in thread
From: Gregory Heytings via Emacs development discussions. @ 2020-12-05 17:21 UTC (permalink / raw)
  To: Óscar Fuentes; +Cc: emacs-devel


>>> (3) I'm yet unsure about -O0 builds.  Are they (1)- or (2)-like?
>>
>> Like (2), at least with GCC on 64-bit GNU/Linux.  Apparently Eli does 
>> not see this on MS-Windows.
>
> -O0 does not observe the "inline" declaration nor does consider "static" 
> functions for inlining, so -O0 should be comparable among versions, 
> since the "extern inline" -> "static" -> "static inline" changes are not 
> considered by -O0.
>

I stand corrected, I mixed things up.  The benchmark with GCC 10.2 on 
64-bit GNU/Linux gives:

     |   A  |   B  |   C
-Og | ~21s | ~67s | ~25s
-O0 | ~59s | ~63s | ~75s
-O1 | ~17s | ~26s | ~21s
-O2 | ~16s | ~18s | ~20s
-O3 | ~16s | ~17s | ~19s

A = commit 507d5548349540dbde67d3e535a4607fd2207c49 (last with 'extern inline')
B = emacs-27 ('static')
C = master ('static inline')

(Note that the difference between A and C is in part due to the difference 
of xdisp.c file length: 33842 for A, 35661 for C.)

In short: the '#define EXTERN_INLINE' changes only affect builds with -Og.



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

* Re: The Emacs master is much slower than the emacs-27 branch.
  2020-12-04  9:59 ` Gregory Heytings via Emacs development discussions.
@ 2020-12-09  4:23   ` andres.ramirez
  0 siblings, 0 replies; 74+ messages in thread
From: andres.ramirez @ 2020-12-09  4:23 UTC (permalink / raw)
  To: Gregory Heytings; +Cc: Alan Mackenzie, emacs-devel

Hi. Gregory.

>>>>> "Emacs" == Emacs development discussions <Gregory> writes:


[...]



    Gregory> Emacs 23.4.1: 5.2s (that's not a typo: five seconds) Emacs 24.5.1: 28.2s Emacs 25.2.2:
    Gregory> 27.6s Emacs 26.3: 16.9s Emacs 27.1: 18.5s Emacs 28.0.50: 19.5s

Emacs23 is the speed of light emacs version.

I am replying to this email that was from several days ago. Today It seems an emacs28 x-frame is as speedier as an emacs27
x-frame.

So congrats guys for the work.

Best Regards



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

end of thread, other threads:[~2020-12-09  4:23 UTC | newest]

Thread overview: 74+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-12-03 18:15 The Emacs master is much slower than the emacs-27 branch Alan Mackenzie
2020-12-03 20:17 ` Eli Zaretskii
2020-12-04  9:13   ` Alan Mackenzie
2020-12-03 20:59 ` Mattias Engdegård
2020-12-04  9:24   ` Alan Mackenzie
2020-12-04 10:46   ` Alan Third
2020-12-04 11:07     ` Mattias Engdegård
2020-12-03 21:09 ` Ergus
2020-12-04  9:19   ` Alan Mackenzie
2020-12-03 22:17 ` Stephen Berman
2020-12-04  9:04   ` Alan Mackenzie
2020-12-04  9:32     ` Stephen Berman
2020-12-04  9:53       ` Alan Mackenzie
2020-12-04 10:14         ` Stephen Berman
2020-12-04 11:45       ` Eli Zaretskii
2020-12-04 12:54         ` Stephen Berman
2020-12-04 13:28           ` Eli Zaretskii
2020-12-04 13:53             ` Stephen Berman
2020-12-04 14:05               ` Stephen Berman
2020-12-04 15:51                 ` Eli Zaretskii
2020-12-04 16:03                   ` Stephen Berman
2020-12-04 16:28                     ` Óscar Fuentes
2020-12-04 18:51                       ` Eli Zaretskii
2020-12-04 21:37                         ` Stephen Berman
2020-12-05  8:05                           ` Eli Zaretskii
2020-12-04 16:49                     ` Stefan Monnier
2020-12-05 14:04                       ` Basil L. Contovounesios
2020-12-05 14:38                         ` Stefan Monnier
     [not found]                     ` <837dpxedmz.fsf@gnu.org>
2020-12-04 17:03                       ` Stephen Berman
2020-12-04 17:59                         ` Stephen Berman
2020-12-04 20:47                           ` Óscar Fuentes
2020-12-04 21:33                             ` Stephen Berman
2020-12-04 17:07                     ` Eli Zaretskii
2020-12-04 19:27                   ` Gregory Heytings via Emacs development discussions.
2020-12-04 19:34                     ` Stephen Berman
2020-12-04 19:58                     ` Eli Zaretskii
2020-12-04 20:33                       ` Gregory Heytings via Emacs development discussions.
2020-12-04 20:47                         ` Eli Zaretskii
2020-12-04 20:59                           ` Gregory Heytings via Emacs development discussions.
2020-12-04 21:02                             ` Eli Zaretskii
2020-12-04 21:20                               ` Gregory Heytings via Emacs development discussions.
2020-12-05  7:44                                 ` Eli Zaretskii
2020-12-05  8:14                                   ` Gregory Heytings via Emacs development discussions.
2020-12-05  8:44                                     ` Gregory Heytings via Emacs development discussions.
2020-12-05  9:14                                       ` Eli Zaretskii
2020-12-05  9:20                                         ` Eli Zaretskii
2020-12-05  9:33                                           ` Eli Zaretskii
2020-12-05 13:50                                             ` Basil L. Contovounesios
2020-12-05 14:29                                               ` Eli Zaretskii
2020-12-05 14:56                                                 ` Ergus
2020-12-05 15:14                                                   ` Eli Zaretskii
2020-12-05 15:29                                                     ` Andrea Corallo via Emacs development discussions.
2020-12-05 15:15                                             ` Gregory Heytings via Emacs development discussions.
2020-12-05 15:31                                               ` Óscar Fuentes
2020-12-05  9:05                                     ` Eli Zaretskii
2020-12-05  9:23                                     ` martin rudalics
2020-12-05 12:55                                       ` Gregory Heytings via Emacs development discussions.
2020-12-05 13:41                                         ` Eli Zaretskii
2020-12-05 15:17                                           ` Gregory Heytings via Emacs development discussions.
2020-12-05 15:55                                             ` Eli Zaretskii
2020-12-05 14:47                                       ` Óscar Fuentes
2020-12-05 15:07                                         ` martin rudalics
2020-12-05 15:24                                           ` Gregory Heytings via Emacs development discussions.
2020-12-05 15:36                                             ` martin rudalics
2020-12-05 15:39                                               ` Gregory Heytings via Emacs development discussions.
2020-12-05 15:47                                                 ` Óscar Fuentes
2020-12-05 17:21                                                   ` Gregory Heytings via Emacs development discussions.
2020-12-05 15:57                                                 ` Eli Zaretskii
2020-12-05 16:04                                                   ` Gregory Heytings via Emacs development discussions.
2020-12-05 15:08                                         ` Eli Zaretskii
2020-12-04 14:55     ` Arthur Miller
2020-12-04 15:00       ` Arthur Miller
2020-12-04  9:59 ` Gregory Heytings via Emacs development discussions.
2020-12-09  4:23   ` andres.ramirez

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).