diff options
author | IOhannes m zmölnig <zmoelnig@umlautQ.umlaeute.mur.at> | 2016-05-17 12:21:04 +0200 |
---|---|---|
committer | IOhannes m zmölnig <zmoelnig@umlautQ.umlaeute.mur.at> | 2016-05-17 12:21:04 +0200 |
commit | 248790aca5d5b6dc9a8edeea1abed0195ac1338e (patch) | |
tree | c473c68af2ab5d091d7035fa1b539cbaf2ac2e4f /profile.scm | |
parent | 110d59c341b8c50c04f30d90e85e9b8f6f329a0e (diff) |
Imported Upstream version 16.5~dfsg
Diffstat (limited to 'profile.scm')
-rw-r--r-- | profile.scm | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/profile.scm b/profile.scm new file mode 100644 index 0000000..614ae0b --- /dev/null +++ b/profile.scm @@ -0,0 +1,30 @@ +(define* (show-profile (n 100)) + (let ((info (*s7* 'profile-info))) + (if (null? info) + (format *stderr* "no profiling data!~%") + (let ((vect (make-vector (hash-table-entries info)))) + (copy info vect) + (set! vect (sort! vect (lambda (a b) (> (cadr a) (cadr b))))) + (set! n (min n (length vect))) + (do ((i 0 (+ i 1))) + ((= i n) (newline *stderr*)) + (let* ((data (vect i)) + (key (car data)) + (count (cadr data)) + (expr (cddr data)) + (file (pair-filename expr)) + (line (pair-line-number expr))) + (if (> (ash key -20) 0) + (format *stderr* "~A[~A]: ~A~40T~A~%" + file line count + (let ((val (object->string expr))) + (if (> (length val) 40) + (string-append (substring val 0 36) " ...") + val)))))))))) + +#| +(define old-version s7-version) +(define (s7-version) + (show-profile) + (old-version)) +|# |