summaryrefslogtreecommitdiff
path: root/module/system/base
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2016-02-01 14:58:34 +0100
committerAndy Wingo <wingo@pobox.com>2016-02-01 15:12:36 +0100
commit8998f1539f9b998a9ec5f867d3933cdd8f06fc41 (patch)
tree1b238bba8b10adf073d9549aeaf48a90ffc45a5f /module/system/base
parent4066ee31920d52ec0549ce882f883b92992f894b (diff)
Update statprof documentation; deprecate `with-statprof'
* module/statprof.scm: Remove most of the commentary, as it was duplicated in the manual and was getting out of date. (stats): Remove self-secs-per-call and cum-secs-per-call fields as they can be computed from the other fields. (statprof-call-data->stats): Adapt. (statprof-stats-self-secs-per-call): (statprof-stats-cum-secs-per-call): New functions. (statprof-display/flat): Don't print the seconds-per-call fields, as we are no longer stopping the clock around call counters. Anyway these times were quite misleading. (with-statprof): Deprecate. It took its keyword arguments at the beginning; very complicated! Better to use the `statprof' function. (`statprof' was introduced after `with-statprof' and then `with-statprof' was adapted to use it.) * doc/ref/statprof.texi (Statprof): Port this documentation away from the automatically generated text and update it for the new interfaces like #:display-style. * module/system/base/syntax.scm (record-case): Remove comment that referenced with-statprof. Add comment indicating that record-case should be replaced. * doc/ref/scheme-using.texi (Profile Commands): Update to mention keyword arguments and to link to the statprof documentation.
Diffstat (limited to 'module/system/base')
-rw-r--r--module/system/base/syntax.scm30
1 files changed, 1 insertions, 29 deletions
diff --git a/module/system/base/syntax.scm b/module/system/base/syntax.scm
index 249961d79..fafcce40b 100644
--- a/module/system/base/syntax.scm
+++ b/module/system/base/syntax.scm
@@ -146,35 +146,7 @@
(car in)
out)))))))
-;; So, dear reader. It is pleasant indeed around this fire or at this
-;; cafe or in this room, is it not? I think so too.
-;;
-;; This macro used to generate code that looked like this:
-;;
-;; `(((record-predicate ,record-type) ,r)
-;; (let ,(map (lambda (slot)
-;; (if (pair? slot)
-;; `(,(car slot) ((record-accessor ,record-type ',(cadr slot)) ,r))
-;; `(,slot ((record-accessor ,record-type ',slot) ,r))))
-;; slots)
-;; ,@body)))))
-;;
-;; But this was a hot spot, so computing all those predicates and
-;; accessors all the time was getting expensive, so we did a terrible
-;; thing: we decided that since above we're already defining accessors
-;; and predicates with computed names, we might as well just rely on that fact here.
-;;
-;; It's a bit nasty, I agree. But it is fast.
-;;
-;;scheme@(guile-user)> (with-statprof #:hz 1000 #:full-stacks? #t (resolve-module '(oop goops)))% cumulative self
-;; time seconds seconds name
-;; 8.82 0.03 0.01 glil->assembly
-;; 8.82 0.01 0.01 record-type-fields
-;; 5.88 0.01 0.01 %compute-initargs
-;; 5.88 0.01 0.01 list-index
-
-
-;;; So ugly... but I am too ignorant to know how to make it better.
+;;; FIXME: Re-write uses of `record-case' to use `match' instead.
(define-syntax record-case
(lambda (x)
(syntax-case x ()