X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=scm%2Flily.scm;h=401017181cb39d460a5453caa72ae343cfb3788e;hb=1c4458de37e468a5d4fe023a34a5bcb05bf24aad;hp=78430f882e0cf4e4d02e9598086f943d93cd5f3d;hpb=adaa7aecab8595596fc6505402b40a37a04716e6;p=lilypond.git diff --git a/scm/lily.scm b/scm/lily.scm index 78430f882e..401017181c 100644 --- a/scm/lily.scm +++ b/scm/lily.scm @@ -5,6 +5,14 @@ ;;;; (c) 1998--2006 Jan Nieuwenhuizen ;;;; Han-Wen Nienhuys +;; Internationalisation: (_i "to be translated") gets an entry in the +;; POT file (gettext ) must be invoked explicitely to do the actual +;; "translation". +;;(define-macro (_i x) x) +;;(define-macro-public _i (x) x) +;;(define-public-macro _i (x) x) +;; Abbrv-PWR! +(defmacro-public _i (x) x) (define (define-scheme-options) (for-each (lambda (x) @@ -21,26 +29,29 @@ (check-internal-types #f "check every property assignment for types") (clip-systems #f "Generate cut-out snippets of a score") (debug-gc #f "dump memory debugging statistics") - (debug-gc-assert-parsed-dead - #f "for memory debugging: ensure that all refs to parsed objects are dead.") + (debug-gc-assert-parsed-dead #f "for memory debugging: +ensure that all refs to parsed objects are dead. This is an internal option, and is switched on automatically for -ddebug-gc.") (debug-lexer #f "debug the flex lexer") (debug-midi #f "generate human readable MIDI") (debug-parser #f "debug the bison parser") (debug-skylines #f "debug skylines") (delete-intermediate-files #f "delete unusable PostScript files") - (dump-signatures #f "dump output signatures of each system") + (dump-profile #f "dump timing information for each file") (dump-tweaks #f "dump page layout and tweaks for each score having the tweak-key layout property set.") + (dump-signatures #f "dump output signatures of each system") + + (eps-box-padding #f "Pad EPS bounding box left edge by this much to guarantee alignment between systems") + (gs-load-fonts #f "load fonts via Ghostscript.") + (gui #f "running from gui; redirect stderr to log file") + (include-book-title-preview #t "include book-titles in preview images.") (include-eps-fonts #t "Include fonts in separate-system EPS files.") (job-count #f "Process in parallel") - - (eps-box-padding #f "Pad EPS bounding box left edge by this much to guarantee alignment between systems") - - (gui #f "running from gui; redirect stderr to log file") (log-file #f "redirect output to log FILE.log") + (old-relative #f "relative for simultaneous music works similar to chord syntax") @@ -141,7 +152,7 @@ on errors, and print a stack trace.") (if (ly:get-option 'verbose) (ly:progress "[~A" file-name)) (if (not file-name) - (ly:error (_ "Can't find ~A") x)) + (ly:error (_ "cannot find: ~A") x)) (primitive-load file-name) (if (ly:get-option 'verbose) (ly:progress "]")))) @@ -348,6 +359,31 @@ The syntax is the same as `define*-public'." (,symbol? . "symbol") (,vector? . "vector"))) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; timing + +(define (profile-measurements) + (let* ((t (times)) + (stats (gc-stats))) + + (list + (- (tms:utime t) + (ly:assoc-get 'gc-time-taken stats)) + + ;; difficult to put memory amount stats into here. + + ))) + +(define (dump-profile name last this) + (let* + ((outname (format "~a.profile" (basename name ".ly"))) + (diff (map (lambda (y) (apply - y)) (zip this last)))) + + (ly:progress "\nWriting timing to ~a..." outname) + (format (open-file outname "w") + "time: ~a" + (car diff)))) + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; debug mem leaks @@ -395,6 +431,7 @@ The syntax is the same as `define*-public'." (ly:reset-all-fonts) (gc) (gc) + (display "Asserting dead objects\n") (ly:set-option 'debug-gc-assert-parsed-dead #t) (gc) (ly:set-option 'debug-gc-assert-parsed-dead #f) @@ -539,19 +576,20 @@ The syntax is the same as `define*-public'." )) (let* ((failed '()) - (first #t) + (start-measurements #f) (handler (lambda (key failed-file) (set! failed (append (list failed-file) failed))))) (for-each (lambda (x) - ;; We don't carry info across file boundaries - (if first - (set! first #f) - (gc)) - + (gc) + (set! start-measurements (profile-measurements)) (lilypond-file handler x) + (if (ly:get-option 'dump-profile) + (dump-profile x start-measurements (profile-measurements))) + + (ly:clear-anonymous-modules) (if (ly:get-option 'debug-gc) (dump-gc-protects)