Tags: patch The below patch is based on a tangent discussion in bug#58839, the below patch was written in collaboration with João Távora. It involves an optimisation to `buffer-match-p' that dramatically speeds the execution of the function. This is important for the very least as `buffer-match-p' is used for displaying buffer. Running (benchmark-run 1000 (match-buffers "\\*.+\\*")) I previously got (22.822269875 178 15.524474267999977), and with the patch applied (0.27100275 2 0.1730835160000197). There are a few points that can be discussed: 1. Style. I wrap the defun in a let (or rather letrec) block to avoid littering the global namespace. It isn't necessary, and one could argue it makes debugging more difficult. 2. Caching policy. Caching is critical to this optimisation. Just using byte-compilation would cause the above test to slow down to (76.323692627 656 57.088315405). The question is if the hash map will collect too much garbage over time, and if there is a better approach that could be taken? In GNU Emacs 29.0.50 (build 3, x86_64-pc-linux-gnu, GTK+ Version 3.24.30, cairo version 1.16.0) of 2022-10-31 built on heron Repository revision: 462a66e79edcc34ecbeef7cc1604765adfdc038e Repository branch: feature/package+vc System Description: Guix System Configured using: 'configure --with-pgtk --with-imagemagick PKG_CONFIG_PATH=/gnu/store/ssg343s6ldqdwh30136pnawhbgd0cb6i-profile/lib/pkgconfig:/gnu/store/ssg343s6ldqdwh30136pnawhbgd0cb6i-profile/share/pkgconfig'