Simple code to demonstrate this: ;; -*- lexical-binding: t -*- (defmacro my-macro (x) `,x) (eval-and-compile (defun my-func-eac (what) (my-macro what))) (defun my-func-normal (what) (my-macro what)) (print (symbol-function 'my-func-eac)) (print (symbol-function 'my-func-normal)) `eval-and-compile' is advertised in Elisp manual to make byte-compilation of certain macros without prior loading possible. Looks strange that at the same time it can worsen performance of non-byte-compiled code. Paul