[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#45379: 28.0.50; Degraded Performance of describe-buffer-bindings
From: |
Stefan Kangas |
Subject: |
bug#45379: 28.0.50; Degraded Performance of describe-buffer-bindings |
Date: |
Sun, 7 Mar 2021 03:12:17 -0500 |
Eli Zaretskii <eliz@gnu.org> writes:
>> It turns out that we were doing unnecessary looping due to the above
>> mentioned commit. While working on this, I also found that we can get
>> rid of an unnecessary call to char_table_ref_and_range, which should
>> make this function run even faster.
>
> I'm not sure I understand the reasons for each of the changes here.
> char-tables are a tricky data structure, so I'd like to make sure this
> change doesn't make our code subtly incorrect.
Thanks.
I have been struggling to come up with good unit tests, so any ideas
about that would also be very welcome.
> So could you please walk us through the proposed changes, adding
> explanations for each part as you go?
Yes. Please allow for at least a couple of days to write this up.
> (And what do char-tables have to do with describing key bindings,
> btw?)
Full keymaps are char-tables, while sparse keymaps are just lists.
The call stack looks like this:
Fdescribe_buffer_bindings [keymap.c]
-> describe-map-tree [help.el]
-> describe-map
-> Fhelp__describe_vector [keymap.c]
-> describe_vector