From: Andrea Corallo Date: Sun, 10 Jan 2021 14:39:16 +0000 (+0100) Subject: * Introduce native compilation time reports X-Git-Tag: emacs-28.0.90~2727^2~170 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=00101a8d4cc5bbf875711753c936be52e6e549b1;p=emacs.git * Introduce native compilation time reports * lisp/emacs-lisp/comp.el (comp-log-time-report): New special variable. (comp--native-compile): Rework to log time reports. --- diff --git a/lisp/emacs-lisp/comp.el b/lisp/emacs-lisp/comp.el index d5ca3b00049..156b00e6273 100644 --- a/lisp/emacs-lisp/comp.el +++ b/lisp/emacs-lisp/comp.el @@ -142,6 +142,9 @@ The reproducer is a file ELNFILENAME_libgccjit_repro.c deposed in the .eln output directory." :type 'boolean) +(defvar comp-log-time-report nil + "If non-nil, log a time report for each pass.") + (defvar comp-dry-run nil "If non-nil, run everything but the C back-end.") @@ -3869,15 +3872,24 @@ load once finished compiling." :with-late-load with-late-load))) (comp-log "\n \n" 1) (condition-case err - (mapc (lambda (pass) - (unless (memq pass comp-disabled-passes) - (comp-log (format "(%s) Running pass %s:\n" - function-or-file pass) - 2) - (setf data (funcall pass data)) - (cl-loop for f in (alist-get pass comp-post-pass-hooks) - do (funcall f data)))) - comp-passes) + (cl-loop + with report = nil + for t0 = (current-time) + for pass in comp-passes + unless (memq pass comp-disabled-passes) + do + (comp-log (format "(%s) Running pass %s:\n" + function-or-file pass) + 2) + (setf data (funcall pass data)) + (push (cons pass (float-time (time-since t0))) report) + (cl-loop for f in (alist-get pass comp-post-pass-hooks) + do (funcall f data)) + finally + (when comp-log-time-report + (comp-log (format "Done compiling %s" data) 0) + (cl-loop for (pass . time) in (reverse report) + do (comp-log (format "Pass %s took: %fs." pass time) 0)))) (native-compiler-error ;; Add source input. (let ((err-val (cdr err)))