[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Improving EQ
From: |
Pip Cet |
Subject: |
Re: Improving EQ |
Date: |
Thu, 12 Dec 2024 08:36:50 +0000 |
"Eli Zaretskii" <eliz@gnu.org> writes:
>> Date: Wed, 11 Dec 2024 22:37:04 +0000
>> From: Pip Cet via "Emacs development discussions." <emacs-devel@gnu.org>
>>
>> What's missing here is a benchmark, but unless there's a really nasty
>> surprise when that happens, I'm quite confident that we can improve the
>> code here.
>
> The usual easy benchmark is to byte-compile all the *.el files in the
> source tree. That is, remove all the *.elc files, then say "make" and
> time that.
Considering the point of the optimization was to make compilation (when
symbols_with_pos_enabled is true) slower, but speed up non-compilation
use cases, I think that may be the opposite of what we want :-)
Furthermore, the master branch doesn't currently build after deleting
all the *.elc files, because recompilation exceeds max-lisp-eval-depth
in that scenario (together with the known purespace issue, this pretty
much means "make bootstrap" is the only way I can rebuild an emacs tree
right now. It'd be great if Someone could look into this, but I've
failed to understand the native-compilation code (and been told off for
trying to) too often for that Someone to be me. Plus, of course, I fully
understand that native compilation currently has wrong code generation
bugs which obviously have to take priority over build issues...)
> There was also some Emacs benchmark suite that someone posted, but I
> cannot find it now, maybe someone else will.
https://elpa.gnu.org/packages/elisp-benchmarks.html ? It'd be great if
we could agree on a benchmark, and even better if there were a way to
reliably run it from emacs -Q :-)
In fact, I would suggest to move a reduced benchmark suite to the emacs
repo itself, and run it using "make benchmark".
Also, just to let everyone know, I'm planning to make the "exotic"
property (this object must or can use the slow_eq path) part (probably
the LSB) of the tag rather than accessing it via a global variable and
the PVEC type. This should reduce code size further, should speed up
things, and has some other advantages which I'll go into when I have
working code.
Pip
- Improving EQ, Pip Cet, 2024/12/12
- Re: Improving EQ, Eli Zaretskii, 2024/12/12
- Re: Improving EQ, Andrea Corallo, 2024/12/12
- Re: Improving EQ,
Pip Cet <=
- Re: Improving EQ, Eli Zaretskii, 2024/12/12
- Re: Improving EQ, Visuwesh, 2024/12/12
- Re: Improving EQ, Andrea Corallo, 2024/12/12
- Re: Improving EQ, Pip Cet, 2024/12/12
- Re: Improving EQ, Eli Zaretskii, 2024/12/12
- New "make benchmark" target, Stefan Kangas, 2024/12/12
- Re: New "make benchmark" target, Andrea Corallo, 2024/12/12
- Re: New "make benchmark" target, Pip Cet, 2024/12/12
- Re: New "make benchmark" target, Stefan Kangas, 2024/12/12
- Re: New "make benchmark" target, Andrea Corallo, 2024/12/13