Emacs 起動時間の短縮

自宅のマシンの Emacs (23.1.1, X) の設定を見直したときに、起動時間を高速化することができたのでメモしておきます。

段取り

  • .emacs のロードに要する時間をココを参考に計測。数回計測した結果の平均を使う。
  • .emacs 中で各Emacs Lisp (anything や yasnippetなど) のロードに要する時間も測定
  • 計測結果からボトルネックとなるEmacs Lisp を見つけ対処
    • 具体的には、バイトコンパイル、require から autoload にする、そもそもロードしない等

結果

測定結果でボトルネックとなっていたのは anything と yasnippet でした。yasnippet に関しては yasnippet.el をバイトコンパイルすることで、anythingは最新版に更新することで、30%ほど高速化することができました。

後、英語で高速化について調べていたところ、Ubuntu forums にXを使ってウインドウを開く場合に起動を高速化する設定が書いてありました。以下のコードを.emacs に追加すると良いようです。ウインドウマネージャと Emacs のメッセージのやり取りに関する設定のようですが、詳しいことはよく分かりません。

(modify-frame-parameters nil '((wait-for-wm . nil)))

上記の追加することで、最終的に、元々2秒近くかかっていた起動時間が、1秒弱に高速化することができました。