Closed nlevnaut closed 4 years ago
That information as is doesn't mean much. You should do the following:
M-x profiler-start RET cpu RET
M-x profiler-report
M-x profiler-stop
Here are the first few entries expanded.
- redisplay_internal (C function) 13611 48%
- eval 13189 46%
- eyebrowse-mode-line-indicator 12145 42%
- mapconcat 11048 39%
- #<compiled 0x1db762a1> 10853 38%
- eyebrowse-format-slot 10166 35%
- format-spec 6927 24%
- #<compiled 0x10718b5> 3804 13%
- kill-buffer 1479 5%
- replace-buffer-in-windows 872 3%
- unrecord-window-buffer 581 2%
window-normalize-window 24 0%
window-normalize-buffer 28 0%
- magit-preserve-section-visibility-cache 120 0%
- derived-mode-p 90 0%
apply 57 0%
process-kill-buffer-query-function 68 0%
uniquify-kill-buffer-function 18 0%
run-hooks 18 0%
reftex-kill-buffer-hook 15 0%
- generate-new-buffer 1913 6%
- get-buffer-create 323 1%
- run-hooks 310 1%
- treemacs--follow-after-buffer-list-update 278 0%
- run-with-idle-timer 250 0%
+ timer-activate-when-idle 115 0%
- timer-set-idle-time 60 0%
seconds-to-time 19 0%
- timer--time-setter 3 0%
timerp 3 0%
timer-set-function 16 0%
eyebrowse--get 705 2%
- if 557 1%
- display-graphic-p 13 0%
framep-on-display 3 0%
mode-line-eol-desc 81 0%
- unless 30 0%
- if 10 0%
- display-graphic-p 6 0%
framep-on-display 6 0%
window-parameter 6 0%
- #<compiled 0x3d7551> 186 0%
- apply 177 0%
- redisplay--pre-redisplay-functions 145 0%
- run-hook-with-args 116 0%
- redisplay--update-region-highlight 94 0%
- #<compiled 0xf706b5> 47 0%
- apply 43 0%
- rectangle--unhighlight-for-redisplay 30 0%
#<compiled 0x3d749d> 17 0%
file-remote-p 147 0%
- timer-event-handler 5160 18%
- apply 5087 17%
- treemacs--follow 3765 13%
- file-truename 3431 12%
- file-truename 2204 7%
- file-truename 1298 4%
file-truename 514 1%
- treemacs-get-local-window 142 0%
- s-starts-with? 43 0%
string-prefix-p 23 0%
- auto-revert-buffers 487 1%
- apply 487 1%
- #<compiled 0x10ae24d> 327 1%
- auto-revert-handler 296 1%
- apply 296 1%
- auto-revert-handler@bug21559 296 1%
- #<compiled 0x10ac9dd> 268 0%
buffer-stale--default-function 199 0%
file-remote-p 59 0%
- tooltip-timeout 433 1%
- run-hook-with-args-until-success 433 1%
- tooltip-help-tips 433 1%
- tooltip-show 433 1%
- x-show-tip 3 0%
- run-at-time 3 0%
- timer-activate 3 0%
timer--activate 3 0%
- show-paren-function 6 0%
- apply 6 0%
ad-Advice-show-paren-function 6 0%
blink-cursor-start 3 0%
- evil-visual-update-x-selection 3 0%
- evil-set-selection 3 0%
- gui-backend-set-selection 3 0%
- apply 3 0%
#<compiled 0x4087c5> 3 0%
jit-lock-context-fontify 2 0%
cancel-timer-internal 13 0%
timer-inc-time 7 0%
- timer-activate-when-idle 4 0%
- timer--activate 4 0%
timer--time-less-p 3 0%
timer-until 1 0%
- command-execute 5003 17%
- call-interactively 5001 17%
- funcall-interactively 5001 17%
- counsel-M-x 3834 13%
- ivy-read 3700 13%
- read-from-minibuffer 1929 6%
- ivy--queue-exhibit 1196 4%
- ivy--exhibit 1190 4%
- ivy--filter 786 2%
- ivy--re-filter 551 1%
- cl-remove 484 1%
- apply 337 1%
- cl-delete 212 0%
#<compiled 0x2504c31> 106 0%
#<compiled 0x3404545> 81 0%
- cl-remove-if-not 140 0%
- apply 140 0%
- cl-remove 138 0%
- apply 129 0%
- cl-delete 68 0%
#<compiled 0x1dbd1a55> 52 0%
- ivy--recompute-index 62 0%
- cl-position 62 0%
- cl--position 44 0%
ivy--case-fold-string= 41 0%
- cl-search 4 0%
apply 4 0%
ivy--sort 2 0%
- ivy--regex-plus 1 0%
ivy--split-negation 1 0%
- ivy--insert-minibuffer 203 0%
- ivy--resize-minibuffer-to-fit 166 0%
- #<compiled 0x1dad13a9> 8 0%
- internal--after-with-selected-window 8 0%
- select-window 8 0%
- apply 8 0%
ad-Advice-select-window 5 0%
ivy--insert-prompt 3 0%
- ivy--format 187 0%
- ivy--wnd-cands-to-str 102 0%
+ ivy-format-function-default 76 0%
- mapcar 21 0%
- ivy--format-minibuffer-line 21 0%
- ivy--highlight-default 14 0%
ivy-add-face-text-property 3 0%
- mapcar 61 0%
counsel-M-x-transformer 61 0%
- select-window 9 0%
- apply 8 0%
- ad-Advice-select-window 8 0%
evil-refresh-cursor 8 0%
cl-subseq 5 0%
- #<compiled 0x2827335> 4 0%
- internal--after-with-selected-window 4 0%
- select-window 4 0%
- apply 4 0%
ad-Advice-select-window 4 0%
- #<compiled 0x2cca779> 155 0%
- ivy--minibuffer-setup 151 0%
- ivy--exhibit 151 0%
- ivy--filter 123 0%
- ivy--re-filter 117 0%
- cl-remove 79 0%
#<compiled 0x2ed4471> 43 0%
- ivy--recompute-index 6 0%
- ivy--preselect-index 6 0%
cl-position 6 0%
- ivy--format 22 0%
- mapcar 22 0%
counsel-M-x-transformer 22 0%
- ivy--insert-minibuffer 6 0%
- ivy--resize-minibuffer-to-fit 6 0%
- window-resize 3 0%
window--size-to-pixel 3 0%
- timer-event-handler 139 0%
- apply 135 0%
- auto-revert-buffers 45 0%
- apply 45 0%
- #<compiled 0x10ae24d> 20 0%
- auto-revert-handler 20 0%
- apply 20 0%
- auto-revert-handler@bug21559 20 0%
- #<compiled 0x10ac9dd> 13 0%
buffer-stale--default-function 13 0%
- show-paren-function 3 0%
apply 3 0%
- which-key--hide-popup 14 0%
- which-key--hide-buffer-side-window 14 0%
- apply 14 0%
- #<compiled 0x13101f1> 9 0%
- quit-windows-on 9 0%
unrecord-window-buffer 9 0%
- treemacs--fix-width-after-which-key 5 0%
- treemacs-get-local-window 3 0%
- s-starts-with? 3 0%
string-prefix-p 3 0%
- minibuffer-inactive-mode 10 0%
- run-mode-hooks 10 0%
- run-hooks 10 0%
- global-undo-tree-mode-enable-in-buffers 8 0%
- turn-on-undo-tree-mode 8 0%
- undo-tree-overridden-undo-bindings-p 8 0%
global-set-key 4 0%
- global-font-lock-mode-enable-in-buffers 2 0%
- turn-on-font-lock-if-desired 2 0%
- turn-on-font-lock 2 0%
font-lock-mode 2 0%
- command-execute 8 0%
- call-interactively 8 0%
- funcall-interactively 8 0%
self-insert-command 2 0%
- redisplay_internal (C function) 6 0%
- eval 4 0%
- eyebrowse-mode-line-indicator 4 0%
- mapconcat 4 0%
- #<compiled 0x2504b8d> 4 0%
- eyebrowse-format-slot 4 0%
- format-spec 4 0%
#<compiled 0x10718b5> 4 0%
- #<compiled 0x3d7551> 2 0%
apply 2 0%
evil-refresh-cursor 6 0%
- xselect-convert-to-targets 5 0%
mapcar 4 0%
undo-auto--add-boundary 3 0%
- window--sanitize-window-sizes 3 0%
- walk-window-tree 3 0%
- walk-window-tree-1 3 0%
- walk-window-tree-1 3 0%
- #<compiled 0x2d72c09> 3 0%
- window-min-size 3 0%
- window--min-size-1 3 0%
- window-size-fixed-p 3 0%
- window--size-fixed-1 3 0%
window--preserve-size 3 0%
tooltip-hide 2 0%
- ivy-call 690 2%
- #<compiled 0x1346509> 690 2%
- command-execute 690 2%
- call-interactively 690 2%
- funcall-interactively 690 2%
- profiler-report 683 2%
- profiler-report-cpu 683 2%
- profiler-report-profile-other-window 679 2%
- profiler-report-setup-buffer 679 2%
- profiler-report-render-calltree 675 2%
- profiler-report-rerender-calltree 675 2%
- profiler-report-render-calltree-1 675 2%
- profiler-calltree-build 668 2%
- profiler-calltree-build-unified 658 2%
- maphash 658 2%
#<compiled 0x1da803f1> 71 0%
- #<compiled 0x1da10bf1> 51 0%
profiler-calltree-find 20 0%
- #<compiled 0x1db92dc5> 19 0%
- gethash 13 0%
#<compiled 0x205dbb1> 4 0%
puthash 3 0%
- profiler-calltree-compute-percentages 10 0%
- profiler-calltree-walk 10 0%
- profiler-calltree-walk 10 0%
- profiler-calltree-walk 10 0%
- profiler-calltree-walk 10 0%
- profiler-calltree-walk 10 0%
- profiler-calltree-walk 10 0%
- profiler-calltree-walk 10 0%
- profiler-calltree-walk 10 0%
- profiler-calltree-walk 10 0%
- profiler-calltree-walk 10 0%
- profiler-calltree-walk 10 0%
- profiler-calltree-walk 10 0%
- profiler-calltree-walk 10 0%
- profiler-calltree-walk 10 0%
- profiler-calltree-walk 4 0%
- profiler-calltree-walk 4 0%
profiler-calltree-walk 4 0%
- #<compiled 0x1db75ea1> 3 0%
profiler-format-percent 3 0%
- profiler-calltree-sort 7 0%
- profiler-calltree-sort 7 0%
- profiler-calltree-sort 7 0%
- profiler-calltree-sort 7 0%
- profiler-calltree-sort 7 0%
- profiler-calltree-sort 7 0%
- profiler-calltree-sort 7 0%
- profiler-calltree-sort 7 0%
- profiler-calltree-sort 7 0%
- sort 4 0%
profiler-calltree-count> 4 0%
- profiler-calltree-sort 3 0%
- profiler-calltree-sort 3 0%
- profiler-calltree-sort 3 0%
- profiler-calltree-sort 3 0%
- profiler-calltree-sort 3 0%
- profiler-calltree-sort 3 0%
profiler-calltree-sort 3 0%
- profiler-report-setup-buffer-1 4 0%
- profiler-report-mode 4 0%
- run-mode-hooks 4 0%
- run-hooks 4 0%
- evil-mode-enable-in-buffers 4 0%
- evil-initialize 4 0%
- evil-local-mode 4 0%
- evil-disabled-buffer-p 4 0%
evil-initial-state-for-buffer-name 4 0%
profiler-cpu-profile 4 0%
- eyebrowse-mode 7 0%
- customize-mark-as-set 7 0%
custom-load-symbol 7 0%
- ivy--reset-state 539 1%
sort 150 0%
- all-completions 141 0%
#<compiled 0x13464e1> 85 0%
- ivy-thing-at-point 10 0%
- thing-at-point 10 0%
- thing-at-point-url-at-point 10 0%
- thing-at-point-bounds-of-url-at-point 10 0%
- thing-at-point--bounds-of-well-formed-url 10 0%
- regexp-opt 10 0%
- regexp-opt-group 10 0%
- regexp-opt-group 10 0%
- regexp-opt-group 10 0%
- regexp-opt-group 10 0%
- regexp-opt-group 10 0%
- regexp-opt-group 10 0%
- regexp-opt-group 10 0%
- regexp-opt-group 10 0%
- regexp-opt-group 6 0%
- regexp-opt-group 6 0%
- regexp-opt-group 6 0%
- regexp-opt-group 6 0%
- regexp-opt-group 6 0%
- regexp-opt-group 6 0%
- regexp-opt-group 6 0%
regexp-opt-group 6 0%
counsel--M-x-externs 134 0%
- evil-next-visual-line 499 1%
- evil-line-move 499 1%
- next-line 499 1%
- apply 499 1%
- ad-Advice-next-line 499 1%
- do-smooth-scroll 386 1%
- smooth-scroll-lines-above-point 156 0%
- smooth-scroll-count-lines 147 0%
count-screen-lines 147 0%
- smooth-scroll-line-beginning-position 9 0%
beginning-of-visual-line 9 0%
- smooth-scroll-lines-below-point 123 0%
- smooth-scroll-lines-above-point 123 0%
- smooth-scroll-count-lines 94 0%
count-screen-lines 94 0%
- smooth-scroll-line-beginning-position 29 0%
beginning-of-visual-line 29 0%
- scroll-down 16 0%
- eval 16 0%
- eyebrowse-mode-line-indicator 16 0%
- mapconcat 16 0%
- #<compiled 0x1db5f605> 16 0%
- eyebrowse-format-slot 13 0%
- format-spec 13 0%
- #<compiled 0x10718b5> 7 0%
- kill-buffer 2 0%
- replace-buffer-in-windows 2 0%
unrecord-window-buffer 2 0%
generate-new-buffer 3 0%
- scroll-up 6 0%
- eval 6 0%
- eyebrowse-mode-line-indicator 6 0%
- mapconcat 6 0%
- #<compiled 0x2504e4d> 6 0%
- eyebrowse-format-slot 6 0%
- format-spec 3 0%
#<compiled 0x10718b5> 3 0%
- #<compiled 0x1d0767> 113 0%
- line-move 111 0%
- line-move-visual 86 0%
- posn-at-point 20 0%
- eval 20 0%
- eyebrowse-mode-line-indicator 19 0%
- mapconcat 19 0%
- #<compiled 0x29a0279> 19 0%
- eyebrowse-format-slot 13 0%
- format-spec 7 0%
#<compiled 0x10718b5> 4 0%
generate-new-buffer 3 0%
- window-inside-pixel-edges 3 0%
window-edges 3 0%
- default-line-height 2 0%
default-font-height 2 0%
- evil-previous-visual-line 410 1%
- evil-line-move 410 1%
- previous-line 410 1%
- apply 410 1%
- ad-Advice-previous-line 410 1%
- do-smooth-scroll 329 1%
- smooth-scroll-lines-above-point 137 0%
- smooth-scroll-count-lines 95 0%
count-screen-lines 95 0%
- smooth-scroll-line-beginning-position 37 0%
beginning-of-visual-line 37 0%
- smooth-scroll-lines-below-point 81 0%
- smooth-scroll-lines-above-point 81 0%
- smooth-scroll-count-lines 49 0%
count-screen-lines 49 0%
- smooth-scroll-line-beginning-position 32 0%
beginning-of-visual-line 32 0%
- scroll-down 40 0%
- eval 40 0%
- eyebrowse-mode-line-indicator 36 0%
- mapconcat 32 0%
- #<compiled 0x1db32c89> 32 0%
- eyebrowse-format-slot 32 0%
- format-spec 25 0%
- #<compiled 0x10718b5> 15 0%
- kill-buffer 9 0%
- replace-buffer-in-windows 3 0%
unrecord-window-buffer 3 0%
- magit-preserve-section-visibility-cache 3 0%
- derived-mode-p 3 0%
apply 3 0%
- generate-new-buffer 3 0%
- get-buffer-create 3 0%
run-hooks 3 0%
eyebrowse--get 4 0%
if 4 0%
- #<compiled 0x1d07a3> 81 0%
- line-move 81 0%
- line-move-visual 55 0%
- posn-at-point 2 0%
- eval 2 0%
- eyebrowse-mode-line-indicator 2 0%
- mapconcat 2 0%
- #<compiled 0x27488a5> 2 0%
eyebrowse-format-slot 2 0%
- evil-mouse-drag-region 85 0%
- evil-mouse-drag-track 85 0%
- internal--track-mouse 85 0%
- #<compiled 0x16b8189> 85 0%
- read-key 75 0%
read-key-sequence-vector 33 0%
- use-global-map 13 0%
- apply 13 0%
- ad-Advice-use-global-map 13 0%
- evil-normalize-keymaps 13 0%
- evil-state-keymaps 13 0%
- apply 13 0%
- evil-state-keymaps 13 0%
- evil-state-property 5 0%
evil-get-property 5 0%
- #<compiled 0x1c02435> 11 0%
- use-global-map 7 0%
- apply 7 0%
- ad-Advice-use-global-map 7 0%
- evil-normalize-keymaps 7 0%
- evil-state-keymaps 7 0%
- evil-state-auxiliary-keymaps 7 0%
- evil-mode-for-keymap 3 0%
mapcar 3 0%
redisplay 10 0%
- evil-next-line 79 0%
- evil-line-move 79 0%
- next-line 79 0%
- apply 79 0%
- ad-Advice-next-line 79 0%
- do-smooth-scroll 58 0%
- smooth-scroll-lines-above-point 31 0%
- smooth-scroll-count-lines 31 0%
count-screen-lines 31 0%
- smooth-scroll-lines-below-point 20 0%
- smooth-scroll-lines-above-point 20 0%
- smooth-scroll-count-lines 20 0%
count-screen-lines 20 0%
- #<compiled 0x1d0767> 21 0%
- line-move 21 0%
line-move-1 21 0%
- evil-previous-line 60 0%
- evil-line-move 60 0%
- previous-line 60 0%
- apply 60 0%
- ad-Advice-previous-line 60 0%
- do-smooth-scroll 38 0%
- smooth-scroll-lines-above-point 26 0%
- smooth-scroll-count-lines 26 0%
count-screen-lines 26 0%
- smooth-scroll-lines-below-point 12 0%
- smooth-scroll-lines-above-point 12 0%
- smooth-scroll-count-lines 12 0%
count-screen-lines 12 0%
- #<compiled 0x1d07a3> 22 0%
- line-move 22 0%
line-move-1 22 0%
- profiler-report-toggle-entry 11 0%
- profiler-report-expand-entry 11 0%
- profiler-report-insert-calltree-children 11 0%
- mapc 11 0%
- profiler-report-insert-calltree 8 0%
- profiler-report-line-format 3 0%
profiler-report-make-name-part 3 0%
- evil-force-normal-state 10 0%
- evil-normal-state 10 0%
- evil-normalize-keymaps 8 0%
- evil-state-keymaps 8 0%
evil-state-auxiliary-keymaps 8 0%
- called-interactively-p 2 0%
#<compiled 0x1a633d> 2 0%
- evil-window-up 7 0%
- windmove-up 7 0%
- windmove-do-window-select 7 0%
- windmove-find-other-window 7 0%
window-in-direction 7 0%
- evil-window-down 3 0%
- windmove-down 3 0%
- windmove-do-window-select 3 0%
- windmove-find-other-window 3 0%
window-in-direction 3 0%
- ... 3695 13%
Automatic GC 3695 13%
All I see here is that for some reason redisplay is triggered a lot. Triggering redisplay usually redraws the modeline. Redrawing the modeline a lot will slow down Emacs. This issue already came up in https://github.com/wasamasa/eyebrowse/issues/79 and I concluded there that it's not really worth working around. Can you reproduce the slowness when using emacs -Q
, M-x package-initialize
and only enabling this package and visual-line-mode?
Closing due to lack of feedback and #79
First, thank you for the great package!
I noticed that one of my CPU cores was redlining every so often and narrowed it down. It only occurs when:
Moving the cursor stops it momentarily, as does moving to a non-wrapped line, disabling visual-line-mode, or disabling eyebrowse-mode.