Emacs: Byte Compile Elisp Files
Emacs lisp files can be byte compiled.
Byte compiled elisp file has file name
extension .elc
. Normal elisp file is .el
.
Advantage of Byte Compiled Elisp File
- Byte compiled elisp files load faster.
- Byte compiled elisp functions also run faster. (by a simple test of a loop, it seems to run about 4 times faster.)
- Byte compiling will often tell you errors or warning in your elisp code that you normally wouldn't know.

As of today (2022-06-09), for init files and light-weight packages, byte compile don't make any noticeable speed difference.
Loading Byte Compiled File
In your init file, when you use load
, if you want emacs to load the byte compiled file if it exists, you should not include the โ.elโ suffix. For example, do it like this
;; load elisp file, use byte compiled version (.elc) if exist (load "my_emacs_keybinding") ; no file name extension here
[see Emacs Lisp: load, load-file, autoload, require]
How to Byte Compile Emacs Lisp File
There are several ways to byte compile elisp files. The simplest and most useful are:
- Alt+x
byte-compile-file
- Compile a single file. It'll ask for a file name.
- Alt+x
dired-do-byte-compile
ใBใ - Compile all marked files in dired.
- Alt+x
byte-recompile-directory
- Batch compile all elisp files in current dir and subdirectory.
Recompile When Upgrade
When you upgrade to a new emcas version, or upgrade packages, or bring over your byte compiled elisp directory from one machine to another, you should recompile your elisp files, because often, emacs has some incompatible elisp changes, and big packages may fail without recompile.
Reference
(info "(elisp) Byte Compilation")
2011-07-15 thanks to Adolfo Benedetti [2020-10-14 https://twitter.com/adben ] .