Yesterday, I tweaked my toy Emacs screensaver to display images, and discovered that that was very slow indeed.
Today I started actually benchmarking this stuff instead of just guessing what was taking all that time, and surprise, surprise, the problem wasn’t where I thought it was at all.
Instead it was in the xelb library, where it would do a pessimal conversion of strings into bytes. With a three-line patch, it now takes 0.06s to convert one of these xcb:PutImage objects into a byte array, where it previously would take 0.8s.
Look!
Now it almost looks like it’s doing the images that way on purpose and not because that’s how fast it can go!
I really like the xelb library: It’s very clearly structured and is written in a very correct way. But I’m guessing that nobody has tried using it for something as wacky as this before.
I’ve now sent a patch to the maintainer.
That pessimal conversion — Was it on the road to Damascus? What planet are you from, Lars?