* 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 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 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 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-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-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 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 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-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-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-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 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: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 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: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-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.
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 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
[parent not found: <837dpxedmz.fsf@gnu.org>]
* 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 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 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 ` Ó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 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 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 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 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-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: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 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: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-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: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: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 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 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 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 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: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: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 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: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 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: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 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: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: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-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 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-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-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: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