[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs Master d277123f4bf] pixel-scroll-precision-scroll-up-page feels p
From: |
Eval EXEC |
Subject: |
[Emacs Master d277123f4bf] pixel-scroll-precision-scroll-up-page feels pause, but pixel-scroll-precision-scroll-down-page is smooth |
Date: |
Tue, 3 Sep 2024 17:56:40 +0800 |
User-agent: |
Mozilla Thunderbird |
Hello,
I'm help to test emacs master commit: d277123f4bf
I compile emacs source code by :
```bash
make extraclean
./autogen.sh \
&& ./configure CFLAGS='-O3 -mtune=native -march=native' \
--prefix=$(realpath ../emacs-build/$(git branch --show-current | sed
's/\//_/g'))\
--with-mps=yes \
--with-imagemagick \
--with-modules --with-x-toolkit=gtk3 --without-compress-install \
--without-toolkit-scroll-bars --with-native-compilation --with-mailutils\
--enable-link-time-optimization \
--with-tree-sitter --with-xinput2 \
--with-dbus --with-native-compilation=aot \
--with-file-notification=inotify\
&& make -j30 install
```
And I enable pixel-scroll-precision-mode by:
```elisp
(setq-default
pixel-scroll-precision-interpolate-mice nil
pixel-scroll-precision-interpolate-page t
pixel-scroll-precision-use-momentum nil
pixel-scroll-precision-momentum-seconds 2.0
pixel-scroll-precision-interpolation-between-scroll 1.0
pixel-scroll-precision-interpolation-total-time 0.1
pixel-scroll-precision-large-scroll-height nil
)
(pixel-scroll-precision-mode 1)
```
Then I open a rust project.
use touchpad to scroll up and down. When I use touchpad to
`triple-wheel-up`, I feel very lag and pause.
When I `triple-wheel-down`, it's very smooth.
So I `profiler-start` and scroll, then `profiler-report` get:
1. pixel-scroll-precision-scroll-up-page (very lag and pause)
```
923 68% - command-execute
923 68% - funcall-interactively
923 68% - pixel-scroll-precision
861 64% - pixel-scroll-precision-scroll-up
861 64% - pixel-scroll-precision-scroll-up-page
45 3% - eval
22 1% - mode--line-format-right-align
14 1% string-pixel-width
4 0% - eval
3 0% unless
1 0% - minions--prominent-modes
1 0% - cl-remove-if-not
1 0% cl-remove
14 1% - breadcrumb--header-line
13 0% - funcall
12 0% - breadcrumb-project-crumbs
10 0% - breadcrumb--project-crumbs-1
5 0% breadcrumb--format-project-node
2 0% file-name-nondirectory
2 0% split-string
1 0% directory-file-name
2 0% breadcrumb--summarize
1 0% - breadcrumb-imenu-crumbs
1 0% - let
1 0% - which-function
1 0% - add-log-current-defun
1 0% - treesit-add-log-current-defun
1 0% - treesit-defun-at-point
1 0% - treesit-thing-at-point
1 0% - treesit-thing-at
1 0% - treesit-parent-until
1 0% - #<byte-code-function 34C>
1 0% treesit-node-match-p
4 0% - tab-line-format
4 0% - tab-line-tabs-fixed-window-buffers
4 0% - let*
4 0% - sort
4 0% - tab-line-tabs-window-buffers
4 0% - let*
2 0% - seq-remove
1 0% function
2 0% - seq-difference
1 0% seq-reduce
2 0% - minions--prominent-modes
2 0% - cl-remove-if-not
2 0% - cl-remove
1 0% cl-delete
1 0% unless
1 0% - if
1 0% frame-parameter
1 0% mode-line-window-control
1 0% - window-edges
1 0% - window-current-scroll-bars
1 0% frame-current-scroll-bars
29 2% - error-message-string
23 1% - substitute-command-keys
13 0% generate-new-buffer
5 0% - #<byte-code-function E7B>
5 0% - kill-buffer
1 0% - replace-buffer-in-windows
1 0% - unrecord-window-buffer
1 0% window-normalize-window
23 1% - message
22 1% - apply
22 1% - ad-Advice-message
16 1% - apply
16 1% - #<primitive-function message>
1 0% - clear-minibuffer-message
1 0% timerp
1 0% get-buffer-window-list
4 0% - select-window
4 0% - apply
4 0% - ad-Advice-select-window
4 0% - evil-refresh-cursor
1 0% evil-state-property
1 0% evil-set-cursor
3 0% - #<byte-code-function 70F>
3 0% - internal--after-with-selected-window
3 0% - select-window
3 0% - apply
3 0% - ad-Advice-select-window
3 0% evil-refresh-cursor
1 0% abs
1 0% round
292 21% - redisplay_internal (C function)
9 0% - eval
4 0% - mode--line-format-right-align
2 0% string-pixel-width
3 0% - breadcrumb--header-line
3 0% - funcall
2 0% - breadcrumb-project-crumbs
1 0% - breadcrumb--project-crumbs-1
1 0% breadcrumb--format-project-node
1 0% breadcrumb--summarize
1 0% - breadcrumb-imenu-crumbs
1 0% - let
1 0% - which-function
1 0% - add-log-current-defun
1 0% - treesit-add-log-current-defun
1 0% - treesit-defun-at-point
1 0% - treesit-thing-at-point
1 0% - treesit-thing-at
1 0% treesit-node-at
1 0% - minions--prominent-modes
1 0% - cl-remove-if-not
1 0% cl-remove
1 0% tab-line-format
4 0% - tab-bar-make-keymap
4 0% - tab-bar-make-keymap-1
4 0% - tab-bar-format-list
4 0% - #<byte-code-function BB1>
3 0% - tab-bar-format-align-right
2 0% - tab-bar-format-list
2 0% - #<byte-code-function F83>
2 0% - keycast-tab-bar
2 0% - keycast--format
2 0% - format-spec
2 0% generate-new-buffer
1 0% string-pixel-width
1 0% - keycast-tab-bar
1 0% - keycast--format
1 0% - format-spec
1 0% - #<byte-code-function 1DC>
1 0% kill-buffer
62 4% - timer-event-handler
62 4% - apply
62 4% - #<native-comp-function
F616e6f6e796d6f75732d6c616d626461_anonymous_lambda_9>
62 4% jit-lock-context-fontify
11 0% - copilot--post-command
11 0% - apply
11 0% - exec/copilot-complete-advice
11 0% - if
11 0% - progn
9 0% - funcall
9 0% - #<interpreted-function EC0>
9 0% - funcall
9 0% - #<interpreted-function EE2>
9 0% - if
9 0% - progn
5 0% - funcall
5 0% - #<interpreted-function E0C>
5 0% - save-current-buffer
5 0% - apply
5 0% - #<interpreted-function FC3>
5 0% - let
5 0% - while
5 0% - let
5 0% - let*
3 0% - mapc
3 0% - #<interpreted-function BD5>
3 0% - let*
3 0% - add-hook
3 0% - lsp--create-request-cancel
3 0% - function
3 0% -
cconv-make-interpreted-closure
3 0% - macroexpand-all
3 0% - macroexp--expand-all
2 0% - macroexp--all-forms
2 0% - macroexp--expand-all
2 0% - macroexp--all-forms
2 0% - macroexp--expand-all
2 0% - macroexp--all-forms
2 0% - macroexp--expand-all
1 0% - macroexp--all-forms
1 0% -
macroexp--expand-all
1 0% -
macroexp--all-forms
1 0% -
macroexp--expand-all
1 0% -
macroexp-macroexpand
1 0% macroexpand-1
1 0% - macroexp--all-clauses
1 0% - macroexp--all-forms
1 0% - macroexp--expand-all
1 0% - macroexp--all-forms
1 0% - macroexp--expand-all
1 0% - macroexp--all-forms
1 0% - macroexp--expand-all
1 0% - macroexp--all-forms
1 0% -
macroexp--expand-all
1 0% -
macroexp--all-forms
1 0% -
macroexp--expand-all
1 0% -
macroexp--all-forms
1 0% -
macroexp--expand-all
1 0% -
macroexp-macroexpand
1 0% macroexpand-1
1 0% - lsp--position-to-point
1 0% - let*
1 0% - lsp--line-character-to-point
1 0% - or
1 0% - let
1 0% - if
1 0% - let*
1 0% - save-restriction
1 0% - save-excursion
1 0% forward-line
3 0% - lsp-document-highlight
3 0% - let
3 0% - lsp--document-highlight
3 0% - if
3 0% - progn
3 0% - let*
3 0% - if
3 0% - lsp-request-async
3 0% - let*
3 0% - progn
3 0% - lsp--send-request-async
3 0% - let*
3 0% - if
3 0% - let*
1 0% - seq-do
1 0% - function
1 0% -
cconv-make-interpreted-closure
1 0% - cconv-fv
1 0% - cconv-analyze-form
1 0% cconv--analyze-function
1 0% lsp--create-async-callback
1 0% - function
1 0% -
cconv-make-interpreted-closure
1 0% - cconv-fv
1 0% - cconv-analyze-form
1 0% - cconv--analyze-function
1 0% - cconv-analyze-form
1 0% - cconv-analyze-form
1 0% - cconv--analyze-function
1 0% #<native-comp-function
F616e6f6e796d6f75732d6c616d626461_anonymous_lambda_25>
1 0% - condition-case
1 0% - let
1 0% - save-current-buffer
1 0% - unwind-protect
1 0% - progn
1 0% - setq
1 0% - cons
1 0% - json-parse-buffer
1 0% - apply
1 0% - lsp-booster--advice-json-parse
1 0% - or
1 0% - if
1 0% - progn
1 0% - let
1 0% read
2 0% - apply
2 0% - #<native-comp-function copilot--post-command>
1 0% - s-starts-with-p
1 0% string-prefix-p
9 0% display-line-numbers-update-width
9 0% flycheck-error-list-update-source
7 0% - exec/lsp-document-highlight-now
7 0% - let
7 0% - if
7 0% - progn
7 0% - if
7 0% - progn
7 0% - if
7 0% - progn
7 0% - let
6 0% - bounds-of-thing-at-point
2 0% make-closure
2 0% - #<byte-code-function 42F>
2 0% - forward-thing
2 0% forward-symbol
1 0% re-search-forward
1 0% if
5 0% - winner-save-old-configurations
5 0% - winner-remember
1 0% - winner-win-data
1 0% window-edges
4 0% - flycheck-hide-error-buffer
4 0% flycheck-error-message-buffer
4 0% - sideline-flycheck--post-command
4 0% - sideline-flycheck--get-errors
3 0% - flycheck-overlay-errors-in
3 0% - flycheck-overlays-in
3 0% - flycheck-filter-overlays
2 0% - seq-filter
2 0% - seq-map
1 0% - apply
1 0% - #<byte-code-function 1B4>
1 0% mapcar
1 0% seq-sort
3 0% - flycheck-display-error-at-point-soon
3 0% - run-at-time
2 0% timer-relative-time
1 0% - timer-set-time
1 0% timer--time-setter
2 0% - jit-lock--antiblink-post-command
1 0% syntax--lbp
1 0% syntax-ppss
2 0% flycheck-error-list-highlight-errors
1 0% - corfu--auto-post-command
1 0% corfu--match-symbol-p
1 0% which-key--lighter-restore
1 0% - which-key--hide-popup
1 0% which-key--lighter-restore
1 0% - hl-line-highlight
1 0% - apply
1 0% #<native-comp-function hl-line-highlight>
1 0% flycheck-perform-deferred-syntax-check
1 0% - lsp--post-command
1 0% - lsp--idle-reschedule
1 0% - setq
1 0% - run-with-idle-timer
1 0% - timer-activate-when-idle
1 0% timer--activate
0 0% ...
```
2. pixel-scroll-precision-scroll-down-page (very smooth, no pause)
```
423 61% - redisplay_internal (C function)
24 3% - tab-bar-make-keymap
24 3% - tab-bar-make-keymap-1
24 3% - tab-bar-format-list
24 3% - #<byte-code-function 634>
16 2% - tab-bar-format-align-right
16 2% - tab-bar-format-list
16 2% - #<byte-code-function 544>
14 2% - keycast-tab-bar
14 2% - keycast--format
12 1% - format-spec
8 1% generate-new-buffer
3 0% - #<byte-code-function F35>
1 0% kill-buffer
2 0% format
2 0% - tab-bar-format-global
2 0% - #<native-comp-function
F616e6f6e796d6f75732d6c616d626461_anonymous_lambda_39>
2 0% - eval
2 0% - lsp--progress-status
2 0% - let
2 0% - s-join
2 0% - -keep
1 0% - #<interpreted-function 931>
1 0% - let
1 0% if
5 0% - keycast-tab-bar
5 0% - keycast--format
4 0% - format-spec
2 0% - #<byte-code-function 3A9>
2 0% - kill-buffer
1 0% tabspaces--local-buffer-p
2 0% generate-new-buffer
1 0% format
3 0% - tab-bar-format-global
3 0% - #<native-comp-function
F616e6f6e796d6f75732d6c616d626461_anonymous_lambda_39>
2 0% - eval
1 0% - lsp--progress-status
1 0% let
1 0% - flycheck-status-emoji-mode-line-text
1 0% - flycheck-status-emoji--check
1 0% - char-displayable-p
1 0% internal-char-font
20 2% - eval
10 1% - mode--line-format-right-align
5 0% string-pixel-width
3 0% - eval
2 0% - minions--prominent-modes
2 0% - cl-remove-if-not
2 0% - cl-remove
1 0% cl-delete
1 0% cdr
6 0% - breadcrumb--header-line
6 0% - funcall
4 0% - breadcrumb-project-crumbs
4 0% - breadcrumb--project-crumbs-1
2 0% directory-file-name
1 0% breadcrumb--format-project-node
1 0% split-string
2 0% - breadcrumb-imenu-crumbs
2 0% - let
2 0% - which-function
2 0% - add-log-current-defun
2 0% - treesit-add-log-current-defun
2 0% - treesit-defun-at-point
2 0% - treesit-thing-at-point
2 0% - treesit-thing-at
1 0% treesit-parent-until
1 0% treesit-node-at
2 0% - tab-line-format
2 0% - tab-line-tabs-fixed-window-buffers
2 0% - let*
2 0% - let
2 0% - seq-do-indexed
2 0% - seq-do
1 0% - mapc
1 0% - #<byte-code-function 74F>
1 0% - #<interpreted-function F23>
1 0% puthash
1 0% - minions--prominent-modes
1 0% - cl-remove-if-not
1 0% cl-remove
189 27% - command-execute
189 27% - funcall-interactively
189 27% - pixel-scroll-precision
187 27% - pixel-scroll-precision-scroll-down
187 27% - pixel-scroll-precision-scroll-down-page
81 11% - posn-at-point
81 11% - apply
81 11% - #<primitive-function posn-at-point>
30 4% - eval
13 1% - mode--line-format-right-align
7 1% - string-pixel-width
1 0% - #<byte-code-function 08B>
1 0% work-buffer--release
2 0% - eval
2 0% - minions--prominent-modes
2 0% - cl-remove-if-not
2 0% - cl-remove
1 0% cl-ldiff
11 1% - breadcrumb--header-line
11 1% - funcall
8 1% - breadcrumb-project-crumbs
8 1% - breadcrumb--project-crumbs-1
3 0% breadcrumb--format-project-node
2 0% - project-current
2 0% - apply
2 0% - exec-project-current-advice
1 0% - or
1 0% exec-project-current
1 0% split-string
1 0% project-root
1 0% file-name-nondirectory
2 0% - breadcrumb-imenu-crumbs
2 0% - let
2 0% - which-function
2 0% - add-log-current-defun
2 0% - treesit-add-log-current-defun
1 0% - treesit-defun-name
1 0% rust-ts-mode--defun-name
1 0% - treesit-defun-at-point
1 0% - treesit-thing-at-point
1 0% - treesit-thing-at
1 0% treesit-parent-until
2 0% - tab-line-format
2 0% - tab-line-tabs-fixed-window-buffers
2 0% - let*
1 0% - let
1 0% make-hash-table
1 0% - sort
1 0% - tab-line-tabs-window-buffers
1 0% - let*
1 0% - seq-difference
1 0% make-closure
2 0% propertize
2 0% - if
2 0% frame-parameter
33 4% - eval
14 2% - mode--line-format-right-align
11 1% - string-pixel-width
2 0% - #<byte-code-function 733>
2 0% work-buffer--release
2 0% symbol-overlay-refresh
1 0% - eval
1 0% propertize
11 1% - breadcrumb--header-line
10 1% - funcall
5 0% - breadcrumb-imenu-crumbs
5 0% - let
5 0% - which-function
5 0% - add-log-current-defun
5 0% - treesit-add-log-current-defun
3 0% - treesit-defun-at-point
3 0% - treesit-thing-at-point
3 0% - treesit-thing-at
3 0% treesit-parent-until
1 0% - treesit-defun-name
1 0% rust-ts-mode--defun-name
5 0% - breadcrumb-project-crumbs
4 0% - breadcrumb--project-crumbs-1
2 0% breadcrumb--format-project-node
1 0% file-name-nondirectory
1 0% - file-relative-name
1 0% - apply
1 0% - #<interpreted-function 4A2>
1 0% my-cacheable-file-relative-name
1 0% breadcrumb--summarize
1 0% - cl-remove-if
1 0% - cl-remove
1 0% - seq-empty-p
1 0% cl-type-of
4 0% - tab-line-format
3 0% - tab-line-tabs-fixed-window-buffers
3 0% - let*
3 0% - sort
2 0% - tab-line-tabs-window-buffers
2 0% - let*
1 0% - seq-difference
1 0% - seq-reduce
1 0% seq-empty-p
1 0% - seq-remove
1 0% seq-filter
3 0% - minions--prominent-modes
3 0% - cl-remove-if-not
3 0% - cl-remove
1 0% cl-delete
1 0% #<native-comp-function
F616e6f6e796d6f75732d6c616d626461_anonymous_lambda_8>
1 0% if
2 0% - select-window
2 0% - apply
2 0% - ad-Advice-select-window
2 0% evil-refresh-cursor
33 4% - timer-event-handler
33 4% - apply
33 4% - #<native-comp-function
F616e6f6e796d6f75732d6c616d626461_anonymous_lambda_9>
33 4% jit-lock-context-fontify
12 1% flycheck-error-list-update-source
8 1% - ...
7 1% - lsp--document-highlight
7 1% - if
7 1% - progn
7 1% - let*
7 1% - if
7 1% - lsp-request-async
7 1% - let*
7 1% - progn
7 1% - lsp--send-request-async
7 1% - let*
7 1% - if
7 1% - let*
4 0% - seq-do
4 0% - function
4 0% - cconv-make-interpreted-closure
4 0% - macroexpand-all
4 0% - macroexp--expand-all
4 0% - macroexp--all-forms
4 0% - macroexp--expand-all
4 0% - macroexp--all-forms
4 0% - macroexp--expand-all
4 0% - macroexp--all-forms
4 0% - macroexp--expand-all
2 0% - macroexp--all-forms
2 0% - macroexp--expand-all
2 0% - macroexp--all-forms
2 0% - macroexp--expand-all
2 0% - macroexp--all-forms
2 0% - macroexp--expand-all
2 0% - macroexp--all-forms
2 0% - macroexp--expand-all
2 0% - macroexp--all-forms
2 0% macroexp--expand-all
1 0% - macroexp--all-clauses
1 0% - macroexp--all-forms
1 0% - macroexp--expand-all
1 0% - macroexp--all-forms
1 0% - macroexp--expand-all
1 0% - macroexp--all-forms
1 0% - macroexp--expand-all
1 0% booleanp
1 0% function-get
2 0% - lsp--create-async-callback
2 0% - let
2 0% - function
2 0% - cconv-make-interpreted-closure
1 0% - macroexpand-all
1 0% - macroexp--expand-all
1 0% - macroexp--all-forms
1 0% - macroexp--expand-all
1 0% - macroexp--all-forms
1 0% - macroexp--expand-all
1 0% - macroexp--all-forms
1 0% macroexp--expand-all
1 0% - if
1 0% - let
1 0% - function
1 0% - cconv-make-interpreted-closure
1 0% - macroexpand-all
1 0% - macroexp--expand-all
1 0% - macroexp--all-forms
1 0% - macroexp--expand-all
1 0% - macroexp--all-forms
1 0% - macroexp--expand-all
1 0% function-get
1 0% - run-hooks
1 0% - lsp--update-inlay-hints
1 0% - if
1 0% - let*
1 0% - lsp-update-inlay-hints
1 0% - lsp-request-async
1 0% - let*
1 0% - progn
1 0% - lsp--send-request-async
1 0% - let*
1 0% - if
1 0% - let*
1 0% - function
1 0% - cconv-make-interpreted-closure
1 0% - cconv-fv
1 0% #<native-comp-function
F616e6f6e796d6f75732d6c616d626461_anonymous_lambda_29>
8 1% display-line-numbers-update-width
3 0% - flycheck-display-error-at-point-soon
3 0% - run-at-time
2 0% timer-relative-time
1 0% - timer-activate
1 0% - timer--activate
1 0% timer--time-less-p
3 0% - exec/lsp-document-highlight-now
3 0% - let
3 0% - if
2 0% - progn
1 0% - if
1 0% - progn
1 0% - if
1 0% - progn
1 0% - let
1 0% - bounds-of-thing-at-point
1 0% - #<byte-code-function BED>
1 0% - forward-thing
1 0% intern-soft
1 0% - let
1 0% - lsp--cancel-request
1 0% - mapcar
1 0% - #<interpreted-function 29A>
1 0% - let
1 0% - lsp-notify
1 0% - lsp--send-notification
1 0% - mapcar
1 0% - #<interpreted-function 188>
1 0% - let
1 0% - if
1 0% - lsp--log-io-p
1 0% plist-get
1 0% - and
1 0% - and
1 0% boundp
3 0% - winner-save-old-configurations
3 0% - winner-remember
1 0% - winner-win-data
1 0% - winner-sorted-window-list
1 0% #<native-comp-function
F616e6f6e796d6f75732d6c616d626461_anonymous_lambda_10>
2 0% - #<interpreted-function C15>
2 0% - let
2 0% - while
2 0% - if
2 0% - let*
1 0% - mapc
1 0% - #<interpreted-function 66F>
1 0% - let*
1 0% - add-hook
1 0% - lsp--create-request-cancel
1 0% - function
1 0% - cconv-make-interpreted-closure
1 0% - cconv-fv
1 0% - cconv-analyze-form
1 0% - cconv--analyze-function
1 0% - cconv-analyze-form
1 0% - cconv-analyze-form
1 0% - cconv-analyze-form
1 0% cconv-analyze-form
1 0% - if
1 0% - progn
1 0% - condition-case
1 0% - let
1 0% generate-new-buffer
1 0% - evil-repeat-pre-hook
1 0% - evil-repeat-start
1 0% evil-visual-state-p
1 0% keycast--update
1 0% - evil-repeat-post-hook
1 0% evil-repeat-stop
1 0% - sideline-flycheck--post-command
1 0% sideline-flycheck--get-errors
1 0% flycheck-error-list-highlight-errors
```
Why `pixel-scroll-precision-scroll-up-page` is very lag and pause, but
`pixel-scroll-precision-scroll-down-page` is very smooth?
Thank you
- [Emacs Master d277123f4bf] pixel-scroll-precision-scroll-up-page feels pause, but pixel-scroll-precision-scroll-down-page is smooth,
Eval EXEC <=