@Malabaraの答えに加えて、カスタムメイドのwith-timer
マクロを使用して、コードのさまざまな部分(init.el
ファイルなど)を永続的に計測する傾向があります。
違いは、benchmark
インストルメントする特定のビットのコードのパフォーマンスを調査できる一方with-timer
で、コードのインストルメント化された各部分に費やされる時間を(十分に大きい部分のオーバーヘッドなしで)常に提供することです。どの部分をさらに調査する必要があります。
(defmacro with-timer (title &rest forms)
"Run the given FORMS, counting the elapsed time.
A message including the given TITLE and the corresponding elapsed
time is displayed."
(declare (indent 1))
(let ((nowvar (make-symbol "now"))
(body `(progn ,@forms)))
`(let ((,nowvar (current-time)))
(message "%s..." ,title)
(prog1 ,body
(let ((elapsed
(float-time (time-subtract (current-time) ,nowvar))))
(message "%s... done (%.3fs)" ,title elapsed))))))
使用例:
(with-timer "Doing things"
(form (to (be evaluated))))
*Messages*
バッファに次の出力を生成します。
Doing things... done (0.047s)
これは、Jon Wiegleyのuse-package-with-elapsed-timer
優れたuse-package
拡張機能のマクロに大きな影響を受けていることを言及する必要があります。