Re: [dev] [st] Drawing performance

From: Aurélien Aptel <>
Date: Sun, 29 Jan 2012 17:48:54 +0100

First, thank you for the time you spent on st.

On Sun, Jan 29, 2012 at 11:48 AM, Galos, David
<> wrote:
> I've written a patch which drastically improves st's performance
> in interactive console applications, like htop, vim or alsamixer.
> However, catting /dev/urandom is actually worsened , because
> of XCopyArea overhead. The method used was actually to make
> st dumber. Rather than doing any accounting, in every function
> which updates the terminal model, I make an analogous X11 call,
> to update the pixmap. The calls to draw are then replaced by
> xrefresh, which simply XCopyArea's the pixmap onto the window.

Have you tried a more recent st? IMO, we've reached a point where
interactive application are fast enough and it's the "bursting"
usecase we have to speed up.
One particular case is tmux (look at Peter Hartman's previous posts on
this list) for which I've made a simple test attached (

> The patch also reworks the Selection code, both for clarity, and
> to let you see what you select as you drag your mouse around.

Your selection/cleanup code looks good. If you can adapt it to the tip
of the default branch I'll apply it.
Note that selection already changes as you drag your mouse around.
0.1.1 is old :)

In case you're not familiar with mercurial here's the basics commands
you'll need:

get the repo
    $ hg clone

update working directory to last changeset of the default branch
    $ hg up -C default

Note: the -C overwrites any change you've made to the working
directory version when updating. Be careful.
I also suggest compiling with $ make -B in order to have an up-to-date
config.h (overwritten by the current version config.def.h)

make your change and get a diff file you can send
    $ hg diff

If you feel adventurous you can set up a name, commit your change and
send the output of $ hg export tip :)
Received on Sun Jan 29 2012 - 17:48:54 CET

This archive was generated by hypermail 2.3.0 : Sun Jan 29 2012 - 18:00:07 CET