emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

feature/native-comp 00101a8 1/2: * Introduce native compilation time rep


From: Andrea Corallo
Subject: feature/native-comp 00101a8 1/2: * Introduce native compilation time reports
Date: Thu, 14 Jan 2021 16:39:25 -0500 (EST)

branch: feature/native-comp
commit 00101a8d4cc5bbf875711753c936be52e6e549b1
Author: Andrea Corallo <akrl@sdf.org>
Commit: Andrea Corallo <akrl@sdf.org>

    * 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.
---
 lisp/emacs-lisp/comp.el | 30 +++++++++++++++++++++---------
 1 file changed, 21 insertions(+), 9 deletions(-)

diff --git a/lisp/emacs-lisp/comp.el b/lisp/emacs-lisp/comp.el
index d5ca3b0..156b00e 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)))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]