Poor performance in largish files
Every keystroke results in a delay of a few seconds in large files (2000+ lines) making the plugin unusable.
Here's a profile trace:
- command-execute 1018 97%
- call-interactively 1018 97%
- funcall-interactively 1018 97%
- eval-last-sexp 1018 97%
- elisp--eval-last-sexp 1018 97%
- elisp--preceding-sexp 1018 97%
- read 1018 97%
- debug 1018 97%
- recursive-edit 1012 97%
- command-execute 1000 96%
- call-interactively 1000 96%
- funcall-interactively 971 93%
- newline 971 93%
- self-insert-command 971 93%
- electric-indent-post-self-insert-function 949 91%
- indent-according-to-mode 949 91%
- php-cautious-indent-line 949 91%
- if 949 91%
- let 949 91%
- if 949 91%
- progn 949 91%
- funcall 949 91%
- c-indent-line 949 91%
- c-shift-line-indentation 949 91%
- c-after-change 943 90%
- mapc 939 90%
- #<compiled 0x157143360ec5> 939 90%
- c-after-change-mark-abnormal-strings 939 90%
- c-multiline-string-check-final-quote 935 89%
- c-literal-limits 935 89%
- c-full-pp-to-literal 935 89%
- c-parse-ps-state-below 935 89%
- parse-partial-sexp 934 89%
- internal--syntax-propertize 934 89%
- syntax-propertize 934 89%
- php-syntax-propertize-function 915 87%
- while 914 87%
- if 913 87%
- php-in-comment-p 913 87%
- nth 912 87%
syntax-ppss 911 87%
+ funcall 1 0%
+ php-syntax-propertize-extend-region 19 1%
+ c-literal-limits 4 0%
+ c-trim-found-types 3 0%
+ c-invalidate-sws-region-after 1 0%
+ back-to-indentation 4 0%
+ c-before-change 2 0%
+ c-after-change 17 1%
+ #<compiled 0x157143af232d> 4 0%
+ c-before-change 1 0%
+ byte-code 29 2%
+ redisplay_internal (C function) 5 0%
+ timer-event-handler 1 0%
+ ... 22 2%
Let me know how I can debug more!
I'm running into the same issue, except with longer lag and smaller files (running Doom). According to the profiler, most of my CPU time is spent in php-syntax-propertize-function.
Following through a little more, it may be that it's spending a lot of time trying to syntax highlight areas of code that have been commented out (because they are unused). I got some performance improvement by removing these sections (not a permanent solution as the code is not mine). Is there any way of turning off e.g. php--syntax-propertize-quotes-in-comment?
Is there any way of turning off e.g.
php--syntax-propertize-quotes-in-comment?
Like this?
(advice-add 'php--syntax-propertize-quotes-in-comment :override #'ignore)