[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#58950: [PATCH] * lisp/subr.el (buffer-match-p): Optimise performance
From: |
Philip Kaludercic |
Subject: |
bug#58950: [PATCH] * lisp/subr.el (buffer-match-p): Optimise performance |
Date: |
Tue, 01 Nov 2022 19:11:03 +0000 |
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'
0002-lisp-subr.el-buffer-match-p-Accelerate-using-byte-co.patch
Description: Text Data
- bug#58950: [PATCH] * lisp/subr.el (buffer-match-p): Optimise performance,
Philip Kaludercic <=