Subject: Re: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers

From: Eli Zaretskii <[email-masked]>
Date: Tue, 12 Dec 2023 21:16:45 +0200

> Date: Tue, 12 Dec 2023 21:10:13 +0200
> Cc: [email-masked], [email-masked]
> From: Dmitry Gutov <[email-masked]>
> 
> On 12/12/2023 20:36, Eli Zaretskii wrote:
> >> From: Ihor Radchenko<[email-masked]>
> >> Cc:[email-masked],[email-masked],[email-masked]
> >> Date: Tue, 12 Dec 2023 17:44:15 +0000
> >>
> >> Eli Zaretskii<[email-masked]>  writes:
> >>
> >>>>    #define BVAR(buf, field) (buffer_overrides->field ## _ == UNSET ?\
> >>>>                                (buf)->field ## _ :\
> >>>>                               buffer_overrides->field ## _)
> >>>>
> >>>>    and replace the loop with simply setting buffer_overrides slot.
> >>> So for starters, we make each BVAR more expensive, i.e. make Emacs
> >>> uniformly slower (because we call BVAR all over the place).
> >> Yes, although I do not believe that it will have large impact in
> >> practice. It is just an extra == comparison.
> > We've seen how similar extra comparisons slow down Emacs when we
> > introduced symbols-with-location.  IMO, BVAR might be even more
> > expensive, since it is used much more frequently and widely.
> 
> We also have dynamic variable bindings all over the place

But not all of them are special like case-fold-search.

> so it might be worth a try (with measurements).

I didn't say it isn't worth a try.