xtermjs / xterm.js

A terminal for the web
https://xtermjs.org/
MIT License
17.64k stars 1.63k forks source link

Search is very slow when there is a lot of content and many wrapped lines #4902

Open Tyriar opened 10 months ago

Tyriar commented 10 months ago

Repro:

Run the following script in powershell and try search:

for($i=0; $i -lt 10000; $i++) { Write-Output "klfdjklnasdfjkladnljkasgnkljasasdjnasdfjklasdfjklnasdfjklnasdfjklbnasdfjklbnsdfjklbsdfjklbsdfjklbasdfjklbsdfjklbdsfjklbdfasjkbsdfjkladfjklbasdfjsdfjklbjklbsdfjklbsdfjklsdfjklbdfsjklbsdfjklbsdfjklbsdfjklbajklsdfbjklbdfjklbdfljkbdfjklbdfsjklbdfslbjksdfjklbsdfklfdjklnasdfjkladnljkasgnkljasasdjnasdfjklasdfjklnasdfjklnasdfjklbnasdfjklbnsdfjklbsdfjklbsdfjklbasdfjklbsdfjklbdsfjklbdfasjkbsdfjkladfjklbasdfjsdfjklbjklbsdfjklbsdfjklsdfjklbdfsjklbsdfjklbsdfjklbsdfjklbajklsdfbjklbdfjklbdfljkbdfjklbdfsjklbdfslbjksdfjklbsdfklfdjklnasdfjkladnljkasgnkljasasdjnasdfjklasdfjklnasdfjklnasdfjklbnasdfjklbnsdfjklbsdfjklbsdfjklbasdfjklbsdfjklbdsfjklbdfasjkbsdfjkladfjklbasdfjsdfjklbjklbsdfjklbsdfjklsdfjklbdfsjklbsdfjklbsdfjklbsdfjklbajklsdfbjklbdfjklbdfljkbdfjklbdfsjklbdfslbjksdfjklbsdfklfdjklnasdfjkladnljkasgnkljasasdjnasdfjklasdfjklnasdfjklnasdfjklbnasdfjklbnsdfjklbsdfjklbsdfjklbasdfjklbsdfjklbdsfjklbdfasjkbsdfjkladfjklbasdfjsdfjklbjklbsdfjklbsdfjklsdfjklbdfsjklbsdfjklbsdfjklbsdfjklbajklsdfbjklbdfjklbdfljkbdfjklbdfsjklbdfslbjksdfjklbsdfklfdjklnasdfjkladnljkasgnkljasasdjnasdfjklasdfjklnasdfjklnasdfjklbnasdfjklbnsdfjklbsdfjklbsdfjklbasdfjklbsdfjklbdsfjklbdfasjkbsdfjkladfjklbasdfjsdfjklbjklbsdfjklbsdfjklsdfjklbdfsjklbsdfjklbsdfjklbsdfjklbajklsdfbjklbdfjklbdfljkbdfjklbdfsjklbdfslbjksdfjklbsdfklfdjklnasdfjkladnljkasgnkljasasdjnasdfjklasdfjklnasdfjklnasdfjklbnasdfjklbnsdfjklbsdfjklbsdfjklbasdfjklbsdfjklbdsfjklbdfasjkbsdfjkladfjklbasdfjsdfjklbjklbsdfjklbsdfjklsdfjklbdfsjklbsdfjklbsdfjklbsdfjklbajklsdfbjklbdfjklbdfljkbdfjklbdfsjklbdfslbjksdfjklbsdfklfdjklnasdfjkladnljkasgnkljasasdjnasdfjklasdfjklnasdfjklnasdfjklbnasdfjklbnsdfjklbsdfjklbsdfjklbasdfjklbsdfjklbdsfjklbdfasjkbsdfjkladfjklbasdfjsdfjklbjklbsdfjklbsdfjklsdfjklbdfsjklbsdfjklbsdfjklbsdfjklbajklsdfbjklbdfjklbdfljkbdfjklbdfsjklbdfslbjksdfjklbsdfklfdjklnasdfjkladnljkasgnkljasasdjnasdfjklasdfjklnasdfjklnasdfjklbnasdfjklbnsdfjklbsdfjklbsdfjklbasdfjklbsdfjklbdsfjklbdfasjkbsdfjkladfjklbasdfjsdfjklbjklbsdfjklbsdfjklsdfjklbdfsjklbsdfjklbsdfjklbsdfjklbajklsdfbjklbdfjklbdfljkbdfjklbdfsjklbdfslbjksdfjklbsdfklfdjklnasdfjkladnljkasgnkljasasdjnasdfjklasdfjklnasdfjklnasdfjklbnasdfjklbnsdfjklbsdfjklbsdfjklbasdfjklbsdfjklbdsfjklbdfasjkbsdfjkladfjklbasdfjsdfjklbjklbsdfjklbsdfjklsdfjklbdfsjklbsdfjklbsdfjklbsdfjklbajklsdfbjklbdfjklbdfljkbdfjklbdfsjklbdfslbjksdfjklbsdfklfdjklnasdfjkladnljkasgnkljasasdjnasdfjklasdfjklnasdfjklnasdfjklbnasdfjklbnsdfjklbsdfjklbsdfjklbasdfjklbsdfjklbdsfjklbdfasjkbsdfjkladfjklbasdfjsdfjklbjklbsdfjklbsdfjklsdfjklbdfsjklbsdfjklbsdfjklbsdfjklbajklsdfbjklbdfjklbdfljkbdfjklbdfsjklbdfslbjksdfjklbsdfklfdjklnasdfjkladnljkasgnkljasasdjnasdfjklasdfjklnasdfjklnasdfjklbnasdfjklbnsdfjklbsdfjklbsdfjklbasdfjklbsdfjklbdsfjklbdfasjkbsdfjkladfjklbasdfjsdfjklbjklbsdfjklbsdfjklsdfjklbdfsjklbsdfjklbsdfjklbsdfjklbajklsdfbjklbdfjklbdfljkbdfjklbdfsjklbdfslbjksdfjklbsdfklfdjklnasdfjkladnljkasgnkljasasdjnasdfjklasdfjklnasdfjklnasdfjklbnasdfjklbnsdfjklbsdfjklbsdfjklbasdfjklbsdfjklbdsfjklbdfasjkbsdfjkladfjklbasdfjsdfjklbjklbsdfjklbsdfjklsdfjklbdfsjklbsdfjklbsdfjklbsdfjklbajklsdfbjklbdfjklbdfljkbdfjklbdfsjklbdfslbjksdfjklbsdfklfdjklnasdfjkladnljkasgnkljasasdjnasdfjklasdfjklnasdfjklnasdfjklbnasdfjklbnsdfjklbsdfjklbsdfjklbasdfjklbsdfjklbdsfjklbdfasjkbsdfjkladfjklbasdfjsdfjklbjklbsdfjklbsdfjklsdfjklbdfsjklbsdfjklbsdfjklbsdfjklbajklsdfbjklbdfjklbdfljkbdfjklbdfsjklbdfslbjksdfjklbsdfklfdjklnasdfjkladnljkasgnkljasasdjnasdfjklasdfjklnasdfjklnasdfjklbnasdfjklbnsdfjklbsdfjklbsdfjklbasdfjklbsdfjklbdsfjklbdfasjkbsdfjkladfjklbasdfjsdfjklbjklbsdfjklbsdfjklsdfjklbdfsjklbsdfjklbsdfjklbsdfjklbajklsdfbjklbdfjklbdfljkbdfjklbdfsjklbdfslbjksdfjklbsdfklfdjklnasdfjkladnljkasgnkljasasdjnasdfjklasdfjklnasdfjklnasdfjklbnasdfjklbnsdfjklbsdfjklbsdfjklbasdfjklbsdfjklbdsfjklbdfasjkbsdfjkladfjklbasdfjsdfjklbjklbsdfjklbsdfjklsdfjklbdfsjklbsdfjklbsdfjklbsdfjklbajklsdfbjklbdfjklbdfljkbdfjklbdfsjklbdfslbjksdfjklbsdfklfdjklnasdfjkladnljkasgnkljasasdjnasdfjklasdfjklnasdfjklnasdfjklbnasdfjklbnsdfjklbsdfjklbsdfjklbasdfjklbsdfjklbdsfjklbdfasjkbsdfjkladfjklbasdfjsdfjklbjklbsdfjklbsdfjklsdfjklbdfsjklbsdfjklbsdfjklbsdfjklbajklsdfbjklbdfjklbdfljkbdfjklbdfsjklbdfslbjksdfjklbsdfklfdjklnasdfjkladnljkasgnkljasasdjnasdfjklasdfjklnasdfjklnasdfjklbnasdfjklbnsdfjklbsdfjklbsdfjklbasdfjklbsdfjklbdsfjklbdfasjkbsdfjkladfjklbasdfjsdfjklbjklbsdfjklbsdfjklsdfjklbdfsjklbsdfjklbsdfjklbsdfjklbajklsdfbjklbdfjklbdfljkbdfjklbdfsjklbdfslbjksdfjklbsdfklfdjklnasdfjkladnljkasgnkljasasdjnasdfjklasdfjklnasdfjklnasdfjklbnasdfjklbnsdfjklbsdfjklbsdfjklbasdfjklbsdfjklbdsfjklbdfasjkbsdfjkladfjklbasdfjsdfjklbjklbsdfjklbsdfjklsdfjklbdfsjklbsdfjklbsdfjklbsdfjklbajklsdfbjklbdfjklbdfljkbdfjklbdfsjklbdfslbjksdfjklbsdfklfdjklnasdfjkladnljkasgnkljasasdjnasdfjklasdfjklnasdfjklnasdfjklbnasdfjklbnsdfjklbsdfjklbsdfjklbasdfjklbsdfjklbdsfjklbdfasjkbsdfjkladfjklbasdfjsdfjklbjklbsdfjklbsdfjklsdfjklbdfsjklbsdfjklbsdfjklbsdfjklbajklsdfbjklbdfjklbdfljkbdfjklbdfsjklbdfslbjksdfjklbsdfklfdjklnasdfjkladnljkasgnkljasasdjnasdfjklasdfjklnasdfjklnasdfjklbnasdfjklbnsdfjklbsdfjklbsdfjklbasdfjklbsdfjklbdsfjklbdfasjkbsdfjkladfjklbasdfjsdfjklbjklbsdfjklbsdfjklsdfjklbdfsjklbsdfjklbsdfjklbsdfjklbajklsdfbjklbdfjklbdfljkbdfjklbdfsjklbdfslbjksdfjklbsdfklfdjklnasdfjkladnljkasgnkljasasdjnasdfjklasdfjklnasdfjklnasdfjklbnasdfjklbnsdfjklbsdfjklbsdfjklbasdfjklbsdfjklbdsfjklbdfasjkbsdfjkladfjklbasdfjsdfjklbjklbsdfjklbsdfjklsdfjklbdfsjklbsdfjklbsdfjklbsdfjklbajklsdfbjklbdfjklbdfljkbdfjklbdfsjklbdfslbjksdfjklbsdfklfdjklnasdfjkladnljkasgnkljasasdjnasdfjklasdfjklnasdfjklnasdfjklbnasdfjklbnsdfjklbsdfjklbsdfjklbasdfjklbsdfjklbdsfjklbdfasjkbsdfjkladfjklbasdfjsdfjklbjklbsdfjklbsdfjklsdfjklbdfsjklbsdfjklbsdfjklbsdfjklbajklsdfbjklbdfjklbdfljkbdfjklbdfsjklbdfslbjksdfjklbsdfklfdjklnasdfjkladnljkasgnkljasasdjnasdfjklasdfjklnasdfjklnasdfjklbnasdfjklbnsdfjklbsdfjklbsdfjklbasdfjklbsdfjklbdsfjklbdfasjkbsdfjkladfjklbasdfjsdfjklbjklbsdfjklbsdfjklsdfjklbdfsjklbsdfjklbsdfjklbsdfjklbajklsdfbjklbdfjklbdfljkbdfjklbdfsjklbdfslbjksdfjklbsdfklfdjklnasdfjkladnljkasgnkljasasdjnasdfjklasdfjklnasdfjklnasdfjklbnasdfjklbnsdfjklbsdfjklbsdfjklbasdfjklbsdfjklbdsfjklbdfasjkbsdfjkladfjklbasdfjsdfjklbjklbsdfjklbsdfjklsdfjklbdfsjklbsdfjklbsdfjklbsdfjklbajklsdfbjklbdfjklbdfljkbdfjklbdfsjklbdfslbjksdfjklbsdf" }
jerch commented 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 commented 10 months ago

https://github.com/xtermjs/xterm.js/blob/fb2c39cb5748e071e0a1ed49824590aafd45e65e/addons/addon-search/src/SearchAddon.ts#L507

This cost is not small either.

jerch commented 10 months ago

@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.

Tyriar commented 10 months ago

Full scrollback with long non-wrapped lines seemed fine on my machine, only when I wrapped them did it slow down.

tisilent commented 10 months ago

Normal on xterm demo, slightly lagging in vscode.

PerBothner commented 10 months ago

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
PerBothner commented 10 months ago

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.