]> git.eshelyaron.com Git - emacs.git/commit
Optimise 3-arg +, - and *
authorMattias Engdegård <mattiase@acm.org>
Sat, 25 Jul 2020 17:12:26 +0000 (19:12 +0200)
committerMattias Engdegård <mattiase@acm.org>
Sat, 25 Jul 2020 17:24:56 +0000 (19:24 +0200)
commit609cbd63c31a21ca521507695abeda1203134c99
tree52bd1f110dc18f2c8b85e845b99b8eb612d88978
parent3b44829823f43d3736b8ec9db2258eeff7f6c16a
Optimise 3-arg +, - and *

Turn (+ a b c) into (+ (+ a b) c), and do the same for - and *.
The 2-arg operations have their own bytecode which results in a 1.5×
speed-up.  Furthermore, the transform enables other optimisations; for
example, (+ a 1 b) -> (+ (1+ a) b).

* lisp/emacs-lisp/byte-opt.el (byte-optimize-plus, byte-optimize-minus)
(byte-optimize-multiply): Transform (OP a b c) into (OP (OP a b) c).
lisp/emacs-lisp/byte-opt.el