> ..., which would be a good starting point to trace
> the problem (unless someone already knows what the problem is).
I would assume the problem is the excessive redrawing of the whole
terminal window. Each time you move the curser only one cell the whole
screen will be redrawn into a backup pixmap and then the whole pixmap
will be copied to the window.
Also, when the screen is redrawn by the application (maybe due to a page
up/down) st's draw() will be called multiple times due to the kernel
buffer size of pipes, which will result in redrawing the entire window
multiple times.
I have experimented with remembering the min and max row of changes
since the last call to draw() (and only drawing that portion of the
screen) a while ago. It adds a few lines to the code but on my system it
did lower the CPU usage of X. I stopped looking into this because I have
other issues with st besides performance at the moment (mainly xterm
compatibility - I ssh into a few machines and installing a new terminfo
everywhere is no option for me).
--
Eckehard Berns
Received on Wed Oct 19 2011 - 16:12:31 CEST