I would like to be able to run ZSNES without skipping frames on a laptop that is clocked down to 800 MHz with Intel Speedstep.
My reasons for wanting to do this is simply that this is my permanent bedside laptop which will get hot if I have it on my lap at any speed over 800 MHz -- thus I want to be able to play SNES in bed without it getting too hot.

The machine is an old Pentium M, 1.86 GHz (2 MiB cache, 533 MHz bus), 1.5 GiB RAM, 915GM Express Graphics. Even at 800 MHz I would pretty much expect this to run ZSNES perfectly fine.
I can remember how even a Pentium 2 running Windows could run ZSNES with no frame skipping whatsoever back in the day. Now, a Pentium M, with twice the frequency, not to mention vastly superior architecture (wider pipeline, improved branch prediction, four times as large cache, faster bus, new instructions, etc.) this should run with no problems at all.

However, the culprit might be found in the "todo.txt" file, which states as follows:

"- Low performance due to differences in surface sizes (internal and SDL), make both the same size."

So, there is actually something wrong with the GNU/Linux version of ZSNES -- i.e. it is slow. I also suspect that SDL itself is pretty slow in general. My question is simply is there anything I can do about this, short of becoming a ZSNES developer?

The machine runs 32-bit Slackware 13.1.0, with a custom highly optimized kernel for this particular machine, I have also compiled ZSNES by hand, and ensured that GCC indeed uses -O3 for the most optimization. Furthermore, I have tried various resolution settings, even the 512x448 full screen option lags, 256x224 is simply not acceptable, as it renders in a tiny window even in "full screen". I use the latest version of ZSNES, 1.51.