Emacs中,统计启动时间应该采用哪个时间作为标准?

我希望在emacs启动时,在message buffer中显示一个我所用的启动时间,因此写了下面的代码作测试:

    (add-hook 'emacs-startup-hook (lambda ()
				    (message
				     (format "current - before init = %.6f\nafter - before init = %.6f"
		  (float-time (time-subtract (current-time) before-init-time))
		  (float-time (time-subtract after-init-time before-init-time))))))

但是得到的结果差别非常大:

current - before init = 5.414452
after - before init = 0.368963

我感觉应该用current - before init更符合实际,但是想不通为什么after - before会差距这么大?

我的配置文件放在了另外的地方,因此是使用emacs -q -l ~/emacs.d.custom/init.el来启动的,会不会是这导致的?

应该是的, emacs 这部分的流程大约是

初始化 after-init-time
运行 after-init-hook
处理一些命令行参数 (这里面就包括 -l)
运行 emacs-startup-hook

所以这样 load 配置的时间就没计入 after-init-time 里面.

可以看看这篇文章 Emacs 启动过程介绍

after这个时间就是 (emacs-init-time).