diff options
author | Tomohiro Matsuyama <tomo@cx4a.org> | 2012-08-22 15:49:34 +0900 |
---|---|---|
committer | Tomohiro Matsuyama <tomo@cx4a.org> | 2012-08-22 15:49:34 +0900 |
commit | b02baf7f7ce532bbb6cb51ebff63a208bf9fb882 (patch) | |
tree | 471567473877700e55c8273f7f8cf233c1d5ba27 /lisp/profiler.el | |
parent | c2d7786e1272a10c62de7bd1c2d8810e510b3ab1 (diff) | |
download | emacs-b02baf7f7ce532bbb6cb51ebff63a208bf9fb882.tar.gz emacs-b02baf7f7ce532bbb6cb51ebff63a208bf9fb882.tar.bz2 emacs-b02baf7f7ce532bbb6cb51ebff63a208bf9fb882.zip |
* profiler.el: Switch to cl-lib.
Diffstat (limited to 'lisp/profiler.el')
-rw-r--r-- | lisp/profiler.el | 74 |
1 files changed, 37 insertions, 37 deletions
diff --git a/lisp/profiler.el b/lisp/profiler.el index c82aea1118d..8428b38c586 100644 --- a/lisp/profiler.el +++ b/lisp/profiler.el @@ -25,7 +25,7 @@ ;;; Code: (eval-when-compile - (require 'cl)) + (require 'cl-lib)) (defgroup profiler nil "Emacs profiler." @@ -42,38 +42,38 @@ (format "%s" object))) (defun profiler-format (fmt &rest args) - (loop for (width align subfmt) in fmt - for arg in args - for str = (typecase subfmt - (cons (apply 'profiler-format subfmt arg)) - (string (format subfmt arg)) - (t (profiler-ensure-string arg))) - for len = (length str) - if (< width len) - collect (substring str 0 width) into frags - else - collect - (let ((padding (make-string (- width len) ?\s))) - (ecase align - (left (concat str padding)) - (right (concat padding str)))) - into frags - finally return (apply #'concat frags))) + (cl-loop for (width align subfmt) in fmt + for arg in args + for str = (cl-typecase subfmt + (cons (apply 'profiler-format subfmt arg)) + (string (format subfmt arg)) + (t (profiler-ensure-string arg))) + for len = (length str) + if (< width len) + collect (substring str 0 width) into frags + else + collect + (let ((padding (make-string (- width len) ?\s))) + (cl-ecase align + (left (concat str padding)) + (right (concat padding str)))) + into frags + finally return (apply #'concat frags))) ;;; Slot data structure -(defstruct (profiler-slot (:type list) - (:constructor profiler-make-slot)) +(cl-defstruct (profiler-slot (:type list) + (:constructor profiler-make-slot)) backtrace count elapsed) ;;; Log data structure -(defstruct (profiler-log (:type list) - (:constructor profiler-make-log)) +(cl-defstruct (profiler-log (:type list) + (:constructor profiler-make-log)) type diff-p timestamp slots) (defun profiler-log-diff (log1 log2) @@ -117,7 +117,7 @@ ;;; Calltree data structure -(defstruct (profiler-calltree (:constructor profiler-make-calltree)) +(cl-defstruct (profiler-calltree (:constructor profiler-make-calltree)) entry (count 0) count-percent (elapsed 0) elapsed-percent @@ -151,9 +151,9 @@ (1+ (profiler-calltree-depth parent))))) (defun profiler-calltree-find (tree entry) - (dolist (child (profiler-calltree-children tree)) + (cl-dolist (child (profiler-calltree-children tree)) (when (equal (profiler-calltree-entry child) entry) - (return child)))) + (cl-return child)))) (defun profiler-calltree-walk (calltree function) (funcall function calltree) @@ -171,16 +171,16 @@ (unless child (setq child (profiler-make-calltree :entry entry :parent node)) (push child (profiler-calltree-children node))) - (incf (profiler-calltree-count child) count) - (incf (profiler-calltree-elapsed child) elapsed) + (cl-incf (profiler-calltree-count child) count) + (cl-incf (profiler-calltree-elapsed child) elapsed) (setq node child)))))) (defun profiler-calltree-compute-percentages (tree) (let ((total-count 0) (total-elapsed 0)) (dolist (child (profiler-calltree-children tree)) - (incf total-count (profiler-calltree-count child)) - (incf total-elapsed (profiler-calltree-elapsed child))) + (cl-incf total-count (profiler-calltree-count child)) + (cl-incf total-elapsed (profiler-calltree-elapsed child))) (profiler-calltree-walk tree (lambda (node) (unless (zerop total-count) @@ -194,7 +194,7 @@ (/ (* (profiler-calltree-elapsed node) 100) total-elapsed)))))))) -(defun* profiler-calltree-build (log &key reverse) +(cl-defun profiler-calltree-build (log &key reverse) (let ((tree (profiler-make-calltree))) (profiler-calltree-build-1 tree log reverse) (profiler-calltree-compute-percentages tree) @@ -276,7 +276,7 @@ (elapsed-percent (profiler-calltree-elapsed-percent tree)) (count (profiler-calltree-count tree)) (count-percent (profiler-calltree-count-percent tree))) - (ecase (profiler-log-type profiler-report-log) + (cl-ecase (profiler-log-type profiler-report-log) (sample (if diff-p (profiler-format profiler-report-sample-line-format @@ -334,7 +334,7 @@ (defun profiler-report-make-buffer-name (log) (let ((time (format-time-string "%Y-%m-%d %T" (profiler-log-timestamp log)))) - (ecase (profiler-log-type log) + (cl-ecase (profiler-log-type log) (sample (format "*CPU-Profiler-Report %s*" time)) (memory (format "*Memory-Profiler-Report %s*" time))))) @@ -445,16 +445,16 @@ otherwise collapse the entry." (require 'help-fns) (describe-function entry))))) -(defun* profiler-report-render-calltree-1 (log &key reverse (order 'descending)) +(cl-defun profiler-report-render-calltree-1 (log &key reverse (order 'descending)) (let ((calltree (profiler-calltree-build profiler-report-log :reverse reverse))) - (ecase (profiler-log-type log) + (cl-ecase (profiler-log-type log) (sample (setq header-line-format (profiler-report-header-line-format profiler-report-sample-line-format "Function" (list "Time (ms)" "%"))) - (let ((predicate (ecase order + (let ((predicate (cl-ecase order (ascending 'profiler-calltree-elapsed<) (descending 'profiler-calltree-elapsed>)))) (profiler-calltree-sort calltree predicate))) @@ -463,7 +463,7 @@ otherwise collapse the entry." (profiler-report-header-line-format profiler-report-memory-line-format "Function" (list "Alloc" "%"))) - (let ((predicate (ecase order + (let ((predicate (cl-ecase order (ascending 'profiler-calltree-count<) (descending 'profiler-calltree-count>)))) (profiler-calltree-sort calltree predicate)))) @@ -540,7 +540,7 @@ otherwise collapse the entry." (interactive (list (intern (completing-read "Mode: " '("cpu" "memory" "cpu&memory") nil t nil nil "cpu")))) - (ecase mode + (cl-ecase mode (cpu (sample-profiler-start profiler-sample-interval) (message "CPU profiler started")) |