[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/ergoemacs-mode 581be06 212/325: Remove lots of timing c
From: |
Stefan Monnier |
Subject: |
[elpa] externals/ergoemacs-mode 581be06 212/325: Remove lots of timing code |
Date: |
Sat, 23 Oct 2021 18:48:55 -0400 (EDT) |
branch: externals/ergoemacs-mode
commit 581be0674d69b457dee9791d5445f8eeca2598ca
Author: Walter Landry <wlandry@caltech.edu>
Commit: Walter Landry <wlandry@caltech.edu>
Remove lots of timing code
---
ergoemacs-lib.el | 227 -------------------------------------------------------
1 file changed, 227 deletions(-)
diff --git a/ergoemacs-lib.el b/ergoemacs-lib.el
index 4abe2ae..9366819 100644
--- a/ergoemacs-lib.el
+++ b/ergoemacs-lib.el
@@ -550,72 +550,6 @@ to the `warn' function."
(defvar ergoemacs-mn-len nil)
(defvar ergoemacs-mx-len nil)
-
-(defvar ergoemacs-timing-results-buffer "*Ergoemacs Profiling Results*"
- "Buffer name for outputting profiling results.")
-
-(defun ergoemacs-timing-sort-by-call-count (vec1 vec2)
- "Sort by highest call count. See `sort'."
- (>= (aref vec1 0) (aref vec2 0)))
-
-(defun ergoemacs-timing-sort-by-total-time (vec1 vec2)
- "Sort by highest total time spent in function. See `sort'."
- (>= (aref vec1 1) (aref vec2 1)))
-
-(defun ergoemacs-timing-sort-by-average-time (vec1 vec2)
- "Sort by highest average time spent in function. See `sort'."
- (>= (aref vec1 2) (aref vec2 2)))
-
-
-(defcustom ergoemacs-timing-sort-by-function
- 'ergoemacs-timing-sort-by-total-time
- "Non-nil specifies ELP results sorting function.
-These functions are currently available:
-
- `ergoemacs-timing-sort-by-call-count' -- sort by the highest call count
- `ergoemacs-timing-sort-by-total-time' -- sort by the highest total time
- `ergoemacs-timing-sort-by-average-time' -- sort by the highest average times
-
-You can write your own sort function. It should adhere to the
-interface specified by the PREDICATE argument for `sort'. Each
-\"element of LIST\" is really a 4 element vector where element 0
-is the call count, element 1 is the total time spent in the
-function, element 2 is the average time spent in the function,
-and element 3 is the symbol's name string."
- :type 'function
- :group 'ergoemacs-mode)
-
-(defsubst ergoemacs-timing-pack-number (number width)
- "Pack the NUMBER string into WIDTH characters, watching out for
-very small or large numbers"
- (if (<= (length number) width)
- number
- ;; check for very large or small numbers
- (if (string-match "^\\(.*\\)\\(e[+-].*\\)$" number)
- (concat (substring
- (match-string 1 number)
- 0
- (- width (match-end 2) (- (match-beginning 2)) 3))
- "..."
- (match-string 2 number))
- (substring number 0 width))))
-
-(defun ergoemacs-timing-results-jump-to-component (&optional event)
- "Jump to component linked to the current button.
-EVENT is used when this is calledf rom a mouse event."
- (interactive (list last-nonmenu-event))
- (if event (posn-set-point (event-end event)))
- (ergoemacs-component-find-definition
- (get-text-property (point) 'ergoemacs-component)))
-
-(defvar ergoemacs-timing-component-map
- (let ((map (make-sparse-keymap)))
- (define-key map [mouse-1] 'ergoemacs-timing-results-jump-to-component)
- (define-key map [follow-link] 'mouse-face)
- (define-key map "\C-m" 'ergoemacs-timing-results-jump-to-component)
- map)
- "Keymap used on the component maps.")
-
(defcustom ergoemacs-timing-find-regexp
(concat"^\\s-*(ergoemacs-timing" find-function-space-re "%s\\(\\s-\\|$\\)")
"The regexp used by `ergoemacs-timing-find-no-select' to search for a timing
definition.
@@ -628,167 +562,6 @@ insert the face name."
(unless (assoc 'ergoemacs-timing find-function-regexp-alist)
(push (cons 'ergoemacs-timing 'ergoemacs-timing-find-regexp)
find-function-regexp-alist))
-(defun ergoemacs-timing-find-no-select (timing-definition file)
- "Find TIMING-DEFINITION in FILE.
-This uses `find-function-search-for-symbol'."
- (let* ((el-file (and file (concat (file-name-sans-extension file) ".el")))
- (sym (intern (format "%s" timing-definition))))
- (find-function-search-for-symbol sym 'ergoemacs-timing el-file)))
-
-(defun ergoemacs-timing-results-jump (&optional event)
- "Jump to timing item linked to the current button.
-EVENT is used when this is called from a mouse event."
- (interactive (list last-nonmenu-event))
- (if event (posn-set-point (event-end event)))
- (let ((file (get-text-property (point) 'ergoemacs-timing-file))
- (symbol (get-text-property (point) 'ergoemacs-timing-symbol)))
- (when file
- (ergoemacs-component-find-1
- symbol 'ergoemacs-timing 'switch-to-buffer
- (save-excursion
- (ergoemacs-timing-find-no-select symbol file))))))
-
-(defvar ergoemacs-timing-jump-map
- (let ((map (make-sparse-keymap)))
- (define-key map [mouse-1] 'ergoemacs-timing-results-jump)
- (define-key map [follow-link] 'mouse-face)
- (define-key map "\C-m" 'ergoemacs-timing-results-jump)
- map)
- "Jump to a timing definition.")
-
-(defun ergoemacs-timing-output-result--sym (symname &optional file)
- "Insert SYMNAME with appropriate links."
- (let ((sym (format "%s" symname)))
- (unless (catch 'found
- (dolist (lst '(("initialize-\\(.*\\)\\'" "Initialize ")
- ("create-component-\\(.*\\)\\'" "Create Component
")
- ("translate-keymap-\\(.*\\)\\'" "Translate Keymap
")))
- (when (string-match (nth 0 lst) sym)
- (insert (nth 1 lst)
- (propertize (match-string 1 sym)
- 'ergoemacs-component (intern
(match-string 1 sym))
- 'keymap ergoemacs-timing-component-map
- 'mouse-face 'highlight
- 'face 'link
- 'help-echo "mouse-1 or RET jumps to
definition"))
- (throw 'found t)))
- nil)
- (if file
- (insert (propertize sym
- 'ergoemacs-timing-symbol (intern sym)
- 'ergoemacs-timing-file file
- 'keymap ergoemacs-timing-jump-map
- 'mouse-face 'highlight
- 'face 'link
- 'help-echo "mouse-1 or RET jumps to definition"))
- (insert sym)))))
-
-(defun ergoemacs-timing-output-result (resultvec)
- "Output the RESULTVEC into the results buffer. RESULTVEC is a 4
-or more element vector where aref 0 is the call count, aref 1 is
-the total time spent in the function, aref 2 is the average time
-spent in the function, aref 3 is the minimum time spent on the
-function, aref 4 is the maximum time spend on the function, and
-aref 3 is the symbol's string name. All other elements in the
-vector are ignored."
- (let* ((cc (aref resultvec 0))
- (tt (aref resultvec 1))
- (at (aref resultvec 2))
- (mn (aref resultvec 3))
- (mx (aref resultvec 4))
- (symname (aref resultvec 5))
- (file (aref resultvec 6))
- callcnt totaltime avetime mntime mxtime)
- (setq callcnt (number-to-string cc)
- totaltime (number-to-string tt)
- avetime (number-to-string at)
- mntime (number-to-string mn)
- mxtime (number-to-string mx))
- ;; possibly prune the results
- (ergoemacs-timing-output-result--sym symname file)
- (insert-char 32 (+ ergoemacs-field-len (- (length symname)) 2))
- ;; print stuff out, formatting it nicely
- (insert callcnt)
- (insert-char 32 (+ ergoemacs-cc-len (- (length callcnt)) 2))
- (let ((ttstr (ergoemacs-timing-pack-number totaltime ergoemacs-et-len))
- (atstr (ergoemacs-timing-pack-number avetime ergoemacs-at-len))
- (mnstr (ergoemacs-timing-pack-number mntime ergoemacs-mn-len))
- (mxstr (ergoemacs-timing-pack-number mxtime ergoemacs-mx-len)))
- (insert ttstr)
- (insert-char 32 (+ ergoemacs-et-len (- (length ttstr)) 2))
- (insert atstr)
- (insert-char 32 (+ ergoemacs-at-len (- (length atstr)) 2))
- (insert mnstr)
- (insert-char 32 (+ ergoemacs-mn-len (- (length mnstr)) 2))
- (insert mxstr))
- (insert "\n")))
-
-(defun ergoemacs-timing-results ()
- "Display current ergoemacs-mode profiling results.
-Based on `elp-results'."
- (interactive)
- (let ((curbuf (current-buffer))
- (resultsbuf (get-buffer-create ergoemacs-timing-results-buffer)))
- (set-buffer resultsbuf)
- (erase-buffer)
- ;; get the length of the longest function name being profiled
- (let* ((longest 0)
- (title "What")
- (titlelen (length title))
- (ergoemacs-field-len titlelen)
- (cc-header "Count")
- (ergoemacs-cc-len (length cc-header))
- (et-header "Elapsed")
- (ergoemacs-et-len (length et-header))
- (at-header "Average")
- (ergoemacs-at-len (length at-header))
- (mn-header "Min")
- (ergoemacs-mn-len (length mn-header))
- (mx-header "Max")
- (ergoemacs-mx-len (length mx-header))
- (resvec '()))
- (maphash
- (lambda(key item)
- (let* ((symname (format "%s" key))
- (cc (aref item 0))
- (tt (aref item 1))
- (mn (aref item 2))
- (mx (aref item 3))
- (file (aref item 4)))
- (setq longest (max longest (length symname)))
- (push (vector cc tt (if (zerop cc) 0.0
- (/ (float tt) (float cc)))
- mn mx symname file)
- resvec)))
- ergoemacs-timing-hash)
- (setq ergoemacs-field-len (max titlelen longest))
- (let ((column 0))
- (setq header-line-format
- (mapconcat
- (lambda (title)
- (prog1
- (concat
- (propertize " "
- 'display (list 'space :align-to column)
- 'face 'fixed-pitch)
- title)
- (setq column (+ column 2
- (if (= column 0)
- ergoemacs-field-len
- (length title))))))
- (list title cc-header et-header at-header
- mn-header mx-header) "")))
- ;; if sorting is enabled, then sort the results list. in either
- ;; case, call ergoemacs-timing-output-result to output the result in the
- ;; buffer
- (if ergoemacs-timing-sort-by-function
- (setq resvec (sort resvec ergoemacs-timing-sort-by-function)))
- (mapc #'ergoemacs-timing-output-result resvec))
- ;; now pop up results buffer
- (set-buffer curbuf)
- (pop-to-buffer resultsbuf)
- (goto-char (point-min))))
-
(provide 'ergoemacs-lib)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; ergoemacs-lib.el ends here
- [elpa] externals/ergoemacs-mode cea18f4 182/325: Remove more command-loop stuff, (continued)
- [elpa] externals/ergoemacs-mode cea18f4 182/325: Remove more command-loop stuff, Stefan Monnier, 2021/10/23
- [elpa] externals/ergoemacs-mode 9d758c6 190/325: Remove unused hooks, Stefan Monnier, 2021/10/23
- [elpa] externals/ergoemacs-mode 9cd2f3b 193/325: Always display unicode characters, Stefan Monnier, 2021/10/23
- [elpa] externals/ergoemacs-mode 12b1018 194/325: Remove unused functions, Stefan Monnier, 2021/10/23
- [elpa] externals/ergoemacs-mode afc0844 198/325: Fix font problems in help image, Stefan Monnier, 2021/10/23
- [elpa] externals/ergoemacs-mode 2acbb4a 205/325: Remove a component prompt, Stefan Monnier, 2021/10/23
- [elpa] externals/ergoemacs-mode cb65708 216/325: Remove menu-filter stuff, Stefan Monnier, 2021/10/23
- [elpa] externals/ergoemacs-mode 47924dc 203/325: Fix wording, Stefan Monnier, 2021/10/23
- [elpa] externals/ergoemacs-mode 728f2d7 209/325: Remove unused ergoemacs-map--modify-active, Stefan Monnier, 2021/10/23
- [elpa] externals/ergoemacs-mode 3d61040 220/325: Remove ergoemacs-layouts--no-aliases, Stefan Monnier, 2021/10/23
- [elpa] externals/ergoemacs-mode 581be06 212/325: Remove lots of timing code,
Stefan Monnier <=
- [elpa] externals/ergoemacs-mode 1cf6041 225/325: Remove :current-version, Stefan Monnier, 2021/10/23
- [elpa] externals/ergoemacs-mode fe1d378 226/325: Remove :current-theme, Stefan Monnier, 2021/10/23
- [elpa] externals/ergoemacs-mode 78bd8cf 231/325: Remove component stuff, Stefan Monnier, 2021/10/23
- [elpa] externals/ergoemacs-mode d10087f 238/325: Remove ergoemacs macro :reset and :set-selection, Stefan Monnier, 2021/10/23
- [elpa] externals/ergoemacs-mode 2caaef6 239/325: Remove unused functions, Stefan Monnier, 2021/10/23
- [elpa] externals/ergoemacs-mode 4461083 242/325: Add reduction theme again, Stefan Monnier, 2021/10/23
- [elpa] externals/ergoemacs-mode 97a2107 243/325: Add back the command loop. Part of it seems broken, Stefan Monnier, 2021/10/23
- [elpa] externals/ergoemacs-mode 33cc2d6 244/325: Fix command loop key decriptions, Stefan Monnier, 2021/10/23
- [elpa] externals/ergoemacs-mode ef2c71a 245/325: Add back the advices to have the ctrl/alt keys, Stefan Monnier, 2021/10/23
- [elpa] externals/ergoemacs-mode d9b09be 246/325: Make command loop play with unicode only, Stefan Monnier, 2021/10/23