]> git.eshelyaron.com Git - emacs.git/commit
Improve substitute-command-keys performance
authorStefan Kangas <stefan@marxist.se>
Sat, 17 Oct 2020 22:02:55 +0000 (00:02 +0200)
committerStefan Kangas <stefan@marxist.se>
Sun, 18 Oct 2020 15:25:23 +0000 (17:25 +0200)
commitafde53cd81c7817c5b3187e60e7a49790e0af832
tree93ea775eaa564b54793326f8dbee8209fbc6cecc
parent5ad2bb0fa95d9c9ae2387c963b453f695577450a
Improve substitute-command-keys performance

The previous conversion of describe_vector from C to Lisp for the
keymap and char table case lead to an unacceptable performance hit.
Moving back to the C version, as we do here, makes this function
around 50 times faster.

The Lisp version of `substitute-command-keys' was benchmarked using
the form `(documentation 'dired-mode)', which now takes less than 8 ms
on my machine.  This is around 16 times slower than the previous C
version.

Thanks to Stefan Monnier for helpful pointers on benchmarking.

* src/keymap.c (Fhelp__describe_vector): New defun to expose
describe_vector to Lisp for keymaps and char tables.
(syms_of_keymap): New defsubr for Fhelp__describe_vector.
* lisp/help.el (describe-map): Use above defun instead of Lisp
version.
(help--describe-vector): Remove defun; keep it commented out for now.
lisp/help.el
src/keymap.c