bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large nu


From: Dmitry Gutov
Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers
Date: Fri, 22 Sep 2023 04:36:50 +0300
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.13.0

Hi Ihor,

On 20/09/2023 11:53, Ihor Radchenko wrote:
In the attached profile, ~500 Org buffers are being opened and calls to
`find-buffer-visiting' take 12.4 sec out of total 30.9 sec - 1/3 of all
the execution time. After replacing some of the calls to
`find-buffer-visiting' with `get-file-buffer', the total execution time
decreased to ~20 sec, confirming that `find-buffer-visiting' is
contributing significantly to slow performance.

Would it be possible to implement some kind of caching mechanism to be
used by `find-buffer-visiting'?

I'm guessing you Cc'd me because of an existing comment inside xref.el? As you can see I decided not to use this function there, but even get-file-buffer wasn't as fast as I would've wanted, so there's a quick-and-dirty caching solution for sequential lookups (which assumes that the same file would be looked up multiple times in a row).

Putting aside the perspective of maintaining a cache in the core (hopefully this will be discussed later in this feature request), any chance you could initialize that cache yourself first (by iterating through buffers and building file-truename -> buffer map), before you are doing those many lookups? Somewhere in org-agenda-list, perhaps.

That should change the complexity from N*M to N+M, more or less.





reply via email to

[Prev in Thread] Current Thread [Next in Thread]