init.el の読み込みを計測

init.el の中に次のような関数を組み込んで、起動時にどの程度の読み込み時間を要しているのか観察することにしました。

起動時間の制御という意味では、 postpone.el の導入と autoload-if-found 及び with-eval-after-load を積極利用することで、高速な起動を維持できています。しかしながら、常に新しい拡張を試しているので、私の init.el は常に肥大化の傾向にあります。

今回導入した関数の出力を定期的にチェックすることで、新たに追加する設定が原因となる、不用意な起動時間の増加が生じないように気をつけます。

(defconst my-before-load-init-time (current-time))
(defvar my-tick-previous-time my-before-load-init-time)
(defun my-tick-init-time (msg)
  "Tick boot sequence."
  (let ((ctime (current-time)))
    (message "--- %5.2f[ms] %s"
             (* 1000 (float-time
                      (time-subtract ctime my-tick-previous-time)))
             msg)
    (setq my-tick-previous-time ctime)))
;; 呼び出し(init.el中に適宜配置する)
(my-tick-init-time "hoge")

今回の計測では、次のようになりました。

Table 1: init.el 読み込みシーケンスの時間計測
CUI[ms] GUI[ms]
startup 6.67 6.29
core 5.32 5.76
point 3.73 3.77
editing 6.74 7.04
presentation 9.90 7.54
media 2.09 1.81
history 4.88 4.61
development 5.06 4.76
Org Mode 15.82 13.63
frame and window 3.52 3.18
font 3.92 3.26
utility 7.26 4.53
amazon_banner_large
amazon_banner_small