guix-commits
[Top][All Lists]
Advanced

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

02/05: ui: 'load*' compiles with '-O1'.


From: guix-commits
Subject: 02/05: ui: 'load*' compiles with '-O1'.
Date: Mon, 17 May 2021 18:27:34 -0400 (EDT)

civodul pushed a commit to branch master
in repository guix.

commit a0ad6361670e7d3bd831e1a1920b46661a480d0a
Author: Ludovic Courtès <ludo@gnu.org>
AuthorDate: Mon May 17 23:16:40 2021 +0200

    ui: 'load*' compiles with '-O1'.
    
    With this change, the wall-clock time of:
    
      guix system build --no-grafts -d gnu/system/install.scm
    
    goes from 5.0s to 2.3s on Guile 3.0.5.
    
    * guix/ui.scm (without-compiler-optimizations): New macro.
    (load*): Use it.
---
 guix/ui.scm | 15 ++++++++++++++-
 1 file changed, 14 insertions(+), 1 deletion(-)

diff --git a/guix/ui.scm b/guix/ui.scm
index a22024b..05b3f5f 100644
--- a/guix/ui.scm
+++ b/guix/ui.scm
@@ -196,6 +196,18 @@ information, or #f if it could not be found."
                            (stack-ref stack 1)    ;skip the 'throw' frame
                            last))))
 
+(cond-expand
+  (guile-3
+   (define-syntax-rule (without-compiler-optimizations exp)
+     ;; Compile with the baseline compiler (-O1), which is much less expensive
+     ;; than -O2.
+     (parameterize (((@ (system base compile) default-optimization-level) 1))
+       exp)))
+  (else
+   (define-syntax-rule (without-compiler-optimizations exp)
+     ;; No easy way to turn off optimizations on Guile 2.2.
+     exp)))
+
 (define* (load* file user-module
                 #:key (on-error 'nothing-special))
   "Load the user provided Scheme source code FILE."
@@ -225,7 +237,8 @@ information, or #f if it could not be found."
                ;; search for FILE in %LOAD-PATH.  Note: use 'load', not
                ;; 'primitive-load', so that FILE is compiled, which then allows
                ;; us to provide better error reporting with source line 
numbers.
-               (load (canonicalize-path file)))
+               (without-compiler-optimizations
+                (load (canonicalize-path file))))
              (const #f))))))
     (lambda _
       ;; XXX: Errors are reported from the pre-unwind handler below, but



reply via email to

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