Open Tyriar opened 10 months ago
Does the perf only degrade for wrapped lines? So the same amount of data on wrapped lines is just fine? Hard to say whats going on, did you have a chance to spot a possible culprit in the profiler?
@tisilent My first guess here is, that overlong lines take really long during the regexp matching, at least this was in the past a big issue. If its caused by that, than we prolly cant do much about it beside using really big guns like non-blocking search within a separate worker thread.
Full scrollback with long non-wrapped lines seemed fine on my machine, only when I wrapped them did it slow down.
Normal on xterm demo, slightly lagging in vscode.
Here is a Bash version:
for ((i = 0; i < 10000; ++i)); do
echo "klfdjklnasdfjkladnljkasgnkljasasdjnasdfjklasdfjklnasdfjklnasdfjklbnasdfjklbnsdfjklbsdfjklbsdfjklbasdfjklbsdfjklbdsfjklbdfasjkbsdfjkladfjklbasdfjsdfjklbjklbsdfjklbsdfjklsdfjklbdfsjklbsdfjklbsdfjklbsdfjklbajklsdfbjklbdfjklbdfljkbdfjklbdfsjklbdfslbjksdfjklbsdfklfdjklnasdfjkladnljkasgnkljasasdjnasdfjklasdfjklnasdfjklnasdfjklbnasdfjklbnsdfjklbsdfjklbsdfjklbasdfjklbsdfjklbdsfjklbdfasjkbsdfjkladfjklbasdfjsdfjklbjklbsdfjklbsdfjklsdfjklbdfsjklbsdfjklbsdfjklbsdfjklbajklsdfbjklbdfjklbdfljkbdfjklbdfsjklbdfslbjksdfjklbsdfklfdjklnasdfjkladnljkasgnkljasasdjnasdfjklasdfjklnasdfjklnasdfjklbnasdfjklbnsdfjklbsdfjklbsdfjklbasdfjklbsdfjklbdsfjklbdfasjkbsdfjkladfjklbasdfjsdfjklbjklbsdfjklbsdfjklsdfjklbdfsjklbsdfjklbsdfjklbsdfjklbajklsdfbjklbdfjklbdfljkbdfjklbdfsjklbdfslbjksdfjklbsdfklfdjklnasdfjkladnljkasgnkljasasdjnasdfjklasdfjklnasdfjklnasdfjklbnasdfjklbnsdfjklbsdfjklbsdfjklbasdfjklbsdfjklbdsfjklbdfasjkbsdfjkladfjklbasdfjsdfjklbjklbsdfjklbsdfjklsdfjklbdfsjklbsdfjklbsdfjklbsdfjklbajklsdfbjklbdfjklbdfljkbdfjklbdfsjklbdfslbjksdfjklbsdfklfdjklnasdfjkladnljkasgnkljasasdjnasdfjklasdfjklnasdfjklnasdfjklbnasdfjklbnsdfjklbsdfjklbsdfjklbasdfjklbsdfjklbdsfjklbdfasjkbsdfjkladfjklbasdfjsdfjklbjklbsdfjklbsdfjklsdfjklbdfsjklbsdfjklbsdfjklbsdfjklbajklsdfbjklbdfjklbdfljkbdfjklbdfsjklbdfslbjksdfjklbsdfklfdjklnasdfjkladnljkasgnkljasasdjnasdfjklasdfjklnasdfjklnasdfjklbnasdfjklbnsdfjklbsdfjklbsdfjklbasdfjklbsdfjklbdsfjklbdfasjkbsdfjkladfjklbasdfjsdfjklbjklbsdfjklbsdfjklsdfjklbdfsjklbsdfjklbsdfjklbsdfjklbajklsdfbjklbdfjklbdfljkbdfjklbdfsjklbdfslbjksdfjklbsdfklfdjklnasdfjkladnljkasgnkljasasdjnasdfjklasdfjklnasdfjklnasdfjklbnasdfjklbnsdfjklbsdfjklbsdfjklbasdfjklbsdfjklbdsfjklbdfasjkbsdfjkladfjklbasdfjsdfjklbjklbsdfjklbsdfjklsdfjklbdfsjklbsdfjklbsdfjklbsdfjklbajklsdfbjklbdfjklbdfljkbdfjklbdfsjklbdfslbjksdfjklbsdfklfdjklnasdfjkladnljkasgnkljasasdjnasdfjklasdfjklnasdfjklnasdfjklbnasdfjklbnsdfjklbsdfjklbsdfjklbasdfjklbsdfjklbdsfjklbdfasjkbsdfjkladfjklbasdfjsdfjklbjklbsdfjklbsdfjklsdfjklbdfsjklbsdfjklbsdfjklbsdfjklbajklsdfbjklbdfjklbdfljkbdfjklbdfsjklbdfslbjksdfjklbsdfklfdjklnasdfjkladnljkasgnkljasasdjnasdfjklasdfjklnasdfjklnasdfjklbnasdfjklbnsdfjklbsdfjklbsdfjklbasdfjklbsdfjklbdsfjklbdfasjkbsdfjkladfjklbasdfjsdfjklbjklbsdfjklbsdfjklsdfjklbdfsjklbsdfjklbsdfjklbsdfjklbajklsdfbjklbdfjklbdfljkbdfjklbdfsjklbdfslbjksdfjklbsdfklfdjklnasdfjkladnljkasgnkljasasdjnasdfjklasdfjklnasdfjklnasdfjklbnasdfjklbnsdfjklbsdfjklbsdfjklbasdfjklbsdfjklbdsfjklbdfasjkbsdfjkladfjklbasdfjsdfjklbjklbsdfjklbsdfjklsdfjklbdfsjklbsdfjklbsdfjklbsdfjklbajklsdfbjklbdfjklbdfljkbdfjklbdfsjklbdfslbjksdfjklbsdfklfdjklnasdfjkladnljkasgnkljasasdjnasdfjklasdfjklnasdfjklnasdfjklbnasdfjklbnsdfjklbsdfjklbsdfjklbasdfjklbsdfjklbdsfjklbdfasjkbsdfjkladfjklbasdfjsdfjklbjklbsdfjklbsdfjklsdfjklbdfsjklbsdfjklbsdfjklbsdfjklbajklsdfbjklbdfjklbdfljkbdfjklbdfsjklbdfslbjksdfjklbsdfklfdjklnasdfjkladnljkasgnkljasasdjnasdfjklasdfjklnasdfjklnasdfjklbnasdfjklbnsdfjklbsdfjklbsdfjklbasdfjklbsdfjklbdsfjklbdfasjkbsdfjkladfjklbasdfjsdfjklbjklbsdfjklbsdfjklsdfjklbdfsjklbsdfjklbsdfjklbsdfjklbajklsdfbjklbdfjklbdfljkbdfjklbdfsjklbdfslbjksdfjklbsdfklfdjklnasdfjkladnljkasgnkljasasdjnasdfjklasdfjklnasdfjklnasdfjklbnasdfjklbnsdfjklbsdfjklbsdfjklbasdfjklbsdfjklbdsfjklbdfasjkbsdfjkladfjklbasdfjsdfjklbjklbsdfjklbsdfjklsdfjklbdfsjklbsdfjklbsdfjklbsdfjklbajklsdfbjklbdfjklbdfljkbdfjklbdfsjklbdfslbjksdfjklbsdfklfdjklnasdfjkladnljkasgnkljasasdjnasdfjklasdfjklnasdfjklnasdfjklbnasdfjklbnsdfjklbsdfjklbsdfjklbasdfjklbsdfjklbdsfjklbdfasjkbsdfjkladfjklbasdfjsdfjklbjklbsdfjklbsdfjklsdfjklbdfsjklbsdfjklbsdfjklbsdfjklbajklsdfbjklbdfjklbdfljkbdfjklbdfsjklbdfslbjksdfjklbsdfklfdjklnasdfjkladnljkasgnkljasasdjnasdfjklasdfjklnasdfjklnasdfjklbnasdfjklbnsdfjklbsdfjklbsdfjklbasdfjklbsdfjklbdsfjklbdfasjkbsdfjkladfjklbasdfjsdfjklbjklbsdfjklbsdfjklsdfjklbdfsjklbsdfjklbsdfjklbsdfjklbajklsdfbjklbdfjklbdfljkbdfjklbdfsjklbdfslbjksdfjklbsdfklfdjklnasdfjkladnljkasgnkljasasdjnasdfjklasdfjklnasdfjklnasdfjklbnasdfjklbnsdfjklbsdfjklbsdfjklbasdfjklbsdfjklbdsfjklbdfasjkbsdfjkladfjklbasdfjsdfjklbjklbsdfjklbsdfjklsdfjklbdfsjklbsdfjklbsdfjklbsdfjklbajklsdfbjklbdfjklbdfljkbdfjklbdfsjklbdfslbjksdfjklbsdfklfdjklnasdfjkladnljkasgnkljasasdjnasdfjklasdfjklnasdfjklnasdfjklbnasdfjklbnsdfjklbsdfjklbsdfjklbasdfjklbsdfjklbdsfjklbdfasjkbsdfjkladfjklbasdfjsdfjklbjklbsdfjklbsdfjklsdfjklbdfsjklbsdfjklbsdfjklbsdfjklbajklsdfbjklbdfjklbdfljkbdfjklbdfsjklbdfslbjksdfjklbsdfklfdjklnasdfjkladnljkasgnkljasasdjnasdfjklasdfjklnasdfjklnasdfjklbnasdfjklbnsdfjklbsdfjklbsdfjklbasdfjklbsdfjklbdsfjklbdfasjkbsdfjkladfjklbasdfjsdfjklbjklbsdfjklbsdfjklsdfjklbdfsjklbsdfjklbsdfjklbsdfjklbajklsdfbjklbdfjklbdfljkbdfjklbdfsjklbdfslbjksdfjklbsdfklfdjklnasdfjkladnljkasgnkljasasdjnasdfjklasdfjklnasdfjklnasdfjklbnasdfjklbnsdfjklbsdfjklbsdfjklbasdfjklbsdfjklbdsfjklbdfasjkbsdfjkladfjklbasdfjsdfjklbjklbsdfjklbsdfjklsdfjklbdfsjklbsdfjklbsdfjklbsdfjklbajklsdfbjklbdfjklbdfljkbdfjklbdfsjklbdfslbjksdfjklbsdfklfdjklnasdfjkladnljkasgnkljasasdjnasdfjklasdfjklnasdfjklnasdfjklbnasdfjklbnsdfjklbsdfjklbsdfjklbasdfjklbsdfjklbdsfjklbdfasjkbsdfjkladfjklbasdfjsdfjklbjklbsdfjklbsdfjklsdfjklbdfsjklbsdfjklbsdfjklbsdfjklbajklsdfbjklbdfjklbdfljkbdfjklbdfsjklbdfslbjksdfjklbsdfklfdjklnasdfjkladnljkasgnkljasasdjnasdfjklasdfjklnasdfjklnasdfjklbnasdfjklbnsdfjklbsdfjklbsdfjklbasdfjklbsdfjklbdsfjklbdfasjkbsdfjkladfjklbasdfjsdfjklbjklbsdfjklbsdfjklsdfjklbdfsjklbsdfjklbsdfjklbsdfjklbajklsdfbjklbdfjklbdfljkbdfjklbdfsjklbdfslbjksdfjklbsdfklfdjklnasdfjkladnljkasgnkljasasdjnasdfjklasdfjklnasdfjklnasdfjklbnasdfjklbnsdfjklbsdfjklbsdfjklbasdfjklbsdfjklbdsfjklbdfasjkbsdfjkladfjklbasdfjsdfjklbjklbsdfjklbsdfjklsdfjklbdfsjklbsdfjklbsdfjklbsdfjklbajklsdfbjklbdfjklbdfljkbdfjklbdfsjklbdfslbjksdfjklbsdfklfdjklnasdfjkladnljkasgnkljasasdjnasdfjklasdfjklnasdfjklnasdfjklbnasdfjklbnsdfjklbsdfjklbsdfjklbasdfjklbsdfjklbdsfjklbdfasjkbsdfjkladfjklbasdfjsdfjklbjklbsdfjklbsdfjklsdfjklbdfsjklbsdfjklbsdfjklbsdfjklbajklsdfbjklbdfjklbdfljkbdfjklbdfsjklbdfslbjksdfjklbsdfklfdjklnasdfjkladnljkasgnkljasasdjnasdfjklasdfjklnasdfjklnasdfjklbnasdfjklbnsdfjklbsdfjklbsdfjklbasdfjklbsdfjklbdsfjklbdfasjkbsdfjkladfjklbasdfjsdfjklbjklbsdfjklbsdfjklsdfjklbdfsjklbsdfjklbsdfjklbsdfjklbajklsdfbjklbdfjklbdfljkbdfjklbdfsjklbdfslbjksdfjklbsdf"
done
For a generic Posix shell replace the first line with the following (tested with zsh):
i=-1; while [ "$((i+=1))" -lt 10000 ] ; do
Without having looked too deeply into the issue, it seems plausible that #4928 may help, as the LineBuffer data structure represents logical (unwrapped) lines. Of course some API tweaks may be needed.
Repro:
Run the following script in powershell and try search: