Closed Vssblt closed 1 year ago
Thank you for providing detailed reproduction information. I will try to solve it this weekend.
I tried debugging and found that the performance degradation is caused by the CursorMoved callbacks in the chunk.lua and line_num.lua files. I made changes to use the CursorHold event instead, which fixes the problem. However, this modification affects the refresh rate of the chunk, as it is now controlled by the 'updatetime' option.
These two lines of code are also the reason for the low performance, and I am trying to use a table to speed up this lookup process.
@Vssblt Could you please test it? I have pushed it to the dev branch. Due to the big change, I am not sure if each chunk can be highlighted correctly as before.
And I have only change it for cpp, other languages are not available yet.
I've run a simple test, and it seems like the performance issue has improved, but it still persists. Even when I comment out the these entire code block, the cursor still can't move smoothly. https://github.com/shellRaining/hlchunk.nvim/blob/71ad15ee0560af318f1f60ece105ba2e61755dee/lua/hlchunk/utils/utils.lua#L80-L99
So, I believe that this is just one of the reasons causing the performance loss.
Actually, I found the code that caused the performance issue. Those loops are really slow, especially the these two lines of code api.nvim_buf_set_extmark
and line_val:sub(start_col + 1, start_col + 1):match("%s")
.
So, I believe that this is just one of the reasons causing the performance loss. Actually, I found the code that caused the performance issue. Those loops are really slow, especially the these two lines of code
api.nvim_buf_set_extmark
andline_val:sub(start_col + 1, start_col + 1):match("%s")
.
I also suspected that these few lines of code were causing the performance issue, but after timing it, I found out that it wasn't the case (sad...)
Indeed, writing like this is not good enough. I will optimize it right away~
The nvim_buf_set_extmark
of neovim looks like have performance issue neovim/neovim#14756. It's a very early issue, but it's still opened.
Do you consider adding a config option for lazy redraw? I believe that is the simple way to resolve this issue. I've forked a repository and it's works very well.
Great idea, let me add this, and pr welcome~
426e8c4ffff9f8b0f121298752c367a8b6491bd8 add lazy render for chunk
d8447fb6e8cd7778ba96fe19d3ab851a4426c9eb delete line_val:sub
statement
Sorry for the late reply. I've been busy lately.😮💨 I will try it on the weekend. :)
pardon~
Is the plugin performance improved ? 🧐
Describe the bug Hi, This is a great plug. Everything is working fine in my environment, except it has performance issues on vertical screen when displaying 140 lines.
To Reproduce Steps to reproduce the behavior:
xset r rate 140 35
set nu
andset rnu
.:DisableHL
Expected behavior The cursor should be able to move smoothly.
Actual behavior The cursor movement is very slow and laggy.
Additional context test file, A cpp file.