• Mattias Engdegård's avatar
    Optimise 3-arg +, - and * · 609cbd63
    Mattias Engdegård authored
    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).
    609cbd63
byte-opt.el 84.9 KB