vsh icon indicating copy to clipboard operation
vsh copied to clipboard

Look into performance of commands with a lot of output

Open hardenedapple opened this issue 8 years ago • 1 comments

I had some trouble before with a lot of output, just try some things out for this.

hardenedapple avatar Nov 15 '16 13:11 hardenedapple

n.b. One easy-to-demonstrate case is man bash when $MANPAGER is set to col -b.

The problems go away by setting $MANPAGER to a script that is simply col -b | cat.

It looks like the problem in that case is context switching between vim and the sub-program, probably combined with the fact that the vimL callback will be called individually for each chunk of text.

grep ctxt /proc/$(pgrep nvim)/status, shows that voluntary_ctxt_switches increases by 100,000 ~ 300,000 when the $MANPAGER is col -b, but only abound 3,000 when it's effectively col -b | cat.

b:changedtick increases by about 1000 for the col -b | cat case, and about 20,000 for the col -b case.

The nvim python provider is a separate thread, so context switches would be done between the vimL callbacks and the python functions it uses.

Just a caveat to self on the measurements: Not done under "sterile" conditions. These b:changedtick and ctxt measurements were on separate runs, so they don't correspond to each other. There is large variation between runs for each $MANPAGER. Sometimes the col -b version is essentially instant, sometimes the col -b | cat version appears as slow as the col -b version is usually.

hardenedapple avatar Apr 03 '17 17:04 hardenedapple