I recently made a couple of small but drastic improvements to
libvterm and
pangoterm's performance, when scrolling long output.
Using my not-so-scientific test of taking a ~500KB text file and running:
$ time cat file
This technically measures the amount of time it takes
cat to write the data into the TTY, but since the buffer is a fixed 4KiB in size, it also measures the time that
pangoterm takes to read all but the final 4KiB of the file, which is under 1% of the file.
I managed to obtain the following timings.
Before I started:
real 0m4.206s
user 0m0.000s
sys 0m0.036s
By optimising
libvterm's
moverect buffer operation with
memmove() (
revision -r511):
real 0m2.035s
user 0m0.000s
sys 0m0.048s
With
pangoterm deferred updates, that delay re-rendering of the screen until all the PTY data has been read, or every 20 msec (
revision -r482):
real 0m0.358s
user 0m0.004s
sys 0m0.016s
It's now well over 10 times faster than it used to be.
Ohh.. and it beats
xterm. By quite a bit.
real 0m2.294s
user 0m0.000s
sys 0m0.036s