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

From: Eli Zaretskii <[email-masked]>
Date: Fri, 22 Sep 2023 17:57:30 +0300

> From: Ihor Radchenko <[email-masked]>
> Cc: [email-masked], [email-masked]
> Date: Fri, 22 Sep 2023 13:30:41 +0000
> 
> Eli Zaretskii <[email-masked]> writes:
> 
> >> Will it be acceptable to implement the cache using variable watchers?
> >
> > I don't like us using variable watchers for such stuff.
> >
> > Why cannot we just cache the correspondence between files and buffers
> > in some hash-table?
> 
> Because `buffer-file-name' can be modified from Lisp (via
> `set-visited-file-name' or directly). Same for `buffer-file-truename'
> and `buffer-file-number'.

You could update the cache in set-visited-file-name, and ignore
direct changes.

> Or should we just assume that these variables remain unchanged other
> than by primitives?

Programs that make these changes are asking for trouble, IMO.  AFAICT,
find-buffer-visiting will never find such buffers anyway.