[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Merging scratch/no-purespace to remove unexec and purespace
From: |
Pip Cet |
Subject: |
Re: Merging scratch/no-purespace to remove unexec and purespace |
Date: |
Sat, 21 Dec 2024 22:19:55 +0000 |
"Helmut Eller" <eller.helmut@gmail.com> writes:
> On Wed, Dec 18 2024, Helmut Eller wrote:
>
> [...]
>> So the pdumper copies objects from purespace to the dump like normal
>> objects; when loading the dump, purespace stays empty.
>>
>> I had (wrongly) assumed that the pdumper creates a separate section for
>> pure objects. Creating such a section sounds easy enough (hmm, maybe
>> not so easy because of hashtables). Still not sure if it would be worth
>> the effort.
>
> Out of curiosity, I implemented such a section with the attached patch.
> It seems that it would save ~2ms per collection cycle.
Very interesting, thank you for sharing!
I tried everything I could think of to disprove your findings, but while
I did find a minor optimization opportunity in the pdumper mark bits
code (a missing eassume (offset >= 0) / eassume (word_number >= 0)),
this affects both branches equally. I can only conclude that your
observation is accurate, and we now have a number that is still close to
zero, but measurable.
The effect seems to be mostly constant (1-2 ms / GC cycle), but I did
see some slightly larger differences when more objects were on the heap.
Cache effects, probably (PURE_P doesn't have to wait for memory,
pdumper_marked_p_impl does).
(I did run into crashes when running emacs without --batch, but those
are easily fixed and did not affect the performance measurements at
all. I only mention this so that others running tests don't get their
hopes (or fears) up).
Pip
- Re: Merging scratch/no-purespace to remove unexec and purespace, (continued)
- Re: Merging scratch/no-purespace to remove unexec and purespace, Helmut Eller, 2024/12/18
- Re: Merging scratch/no-purespace to remove unexec and purespace, Helmut Eller, 2024/12/21
- Re: Merging scratch/no-purespace to remove unexec and purespace, Gerd Möllmann, 2024/12/21
- Re: Merging scratch/no-purespace to remove unexec and purespace, Stefan Kangas, 2024/12/21
- Re: Merging scratch/no-purespace to remove unexec and purespace, Pip Cet, 2024/12/22
- Re: Merging scratch/no-purespace to remove unexec and purespace, Eli Zaretskii, 2024/12/22
- Re: Merging scratch/no-purespace to remove unexec and purespace, Pip Cet, 2024/12/22
- Re: Merging scratch/no-purespace to remove unexec and purespace, Stefan Monnier, 2024/12/22
- Re: Merging scratch/no-purespace to remove unexec and purespace, Helmut Eller, 2024/12/22
- Re: Merging scratch/no-purespace to remove unexec and purespace, Pip Cet, 2024/12/22
- Re: Merging scratch/no-purespace to remove unexec and purespace,
Pip Cet <=
Re: Merging scratch/no-purespace to remove unexec and purespace, Pip Cet, 2024/12/18
Re: Merging scratch/no-purespace to remove unexec and purespace, Po Lu, 2024/12/17