emacs-php / emacs-php/php-mode

Poor performance when `display-line-numbers` is set to `visual`

Open
#657 4 comments 0 reactions 0 assignees View on GitHub
Dominant language
Emacs Lisp
Stars
602
Forks
117
Avg merge
12h 54m
Merged PRs (30d)
3

Description

When using `php-mode`, if `display-line-numbers` is set to `'visual` then the performance when typing is very poor. The problem gets worse proportionally to the number of buffer lines; in my case it becomes noticeable when the buffer gets to around 30 lines.

Here is a profile when set to `'visual`: -

```
- command-execute 291 88%
- call-interactively 291 88%
- funcall-interactively 291 88%
- self-insert-command 273 82%
- c-after-change 138 41%
- c-trim-found-types 138 41%
- c-beginning-of-current-token 138 41%
- skip-syntax-backward 138 41%
- internal--syntax-propertize 138 41%
- syntax-propertize 138 41%
- php-syntax-propertize-function 138 41%
- php-syntax-propertize-hash-line-comment 138 41%
- move-beginning-of-line 137 41%
- line-move 137 41%
line-move-1 137 41%
- electric-pair-post-self-insert-function 135 41%
- electric-pair-syntax-info 135 41%
- syntax-ppss 135 41%
- parse-partial-sexp 135 41%
- internal--syntax-propertize 135 41%
- syntax-propertize 135 41%
- php-syntax-propertize-function 135 41%
- php-syntax-propertize-hash-line-comment 134 40%
- move-beginning-of-line 134 40%
- line-move 134 40%
line-move-1 134 40%
+ counsel-M-x 18 5%
```

Here is a profile when set to `'relative`: -
```
- command-execute 75 70%
- call-interactively 75 70%
- funcall-interactively 75 70%
- self-insert-command 55 51%
- electric-pair-post-self-insert-function 29 27%
- electric-pair-syntax-info 29 27%
- syntax-ppss 29 27%
- parse-partial-sexp 29 27%
- internal--syntax-propertize 29 27%
- syntax-propertize 29 27%
- php-syntax-propertize-function 29 27%
- php-syntax-propertize-hash-line-comment 29 27%
- move-beginning-of-line 29 27%
- line-move 29 27%
- line-move-1 29 27%
- vertical-motion 4 3%
- jit-lock-function 4 3%
- jit-lock-fontify-now 4 3%
- jit-lock--run-functions 4 3%
- run-hook-wrapped 4 3%
- # 4 3%
- font-lock-fontify-region 4 3%
- c-font-lock-fontify-region 4 3%
- font-lock-default-fontify-region 3 2%
- font-lock-fontify-keywords-region 2 1%
- # 1 0%
- c-beginning-of-decl-1 1 0%
- c-beginning-of-statement-1 1 0%
c-beginning-of-macro 1 0%
- c-before-context-fl-expand-region 1 0%
- mapc 1 0%
- # 1 0%
- c-context-expand-fl-region 1 0%
- c-fl-decl-end 1 0%
c-backward-sws 1 0%
- c-after-change 26 24%
- c-trim-found-types 26 24%
- c-beginning-of-current-token 26 24%
- skip-syntax-backward 26 24%
- internal--syntax-propertize 26 24%
- syntax-propertize 26 24%
- php-syntax-propertize-function 26 24%
- php-syntax-propertize-hash-line-comment 26 24%
- move-beginning-of-line 26 24%
- line-move 26 24%
line-move-1 25 23%
+ counsel-M-x 19 17%
+ evil-normal-state 1 0%
+ ... 30 28%
+ redisplay_internal (C function) 1 0%
+ timer-event-handler 1 0%
```

I am using GNU Emacs 27.1 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.22, cairo version 1.17.3) of 2020-08-28

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.