Am I alone? Am I doing something wrong? Is this a known weakness of Android emulators? Maybe the GCW Zero is my answer?
This is almost entirely down to Android as an OS. An OS that 'locks' native code into a 'jail' and overburdens the Linux kernel by running a bloated Java VM on top is not a swell thing - especially not if you intend to use said OS for performance-critical embedded devices like phones/tablets.
I am a developer who has ported RetroArch to PS3, 360, Wii, Gamecube, Xbox 1 and now Android.
In terms of realtime performance, devices with Android perform way below the mark.
For instance, I can run Donkey Kong Country with SNES9x Next on a Gamecube. In world 2-1 I will get around 50 to 55fps. The Gamecube for the record has a 485MHz out of order PowerPC processor with around 256K of L2 cache.
Now I try the very same code on an ARM Cortex A8 single-core Android CPU clocked at 1.2GHz. Android OS is 4.0. Most of the services running in the background have all been killed (which sap performance since they invoke the garbage collector at the most inopportune of times).
What I get with the Cortex A8 in world 2-1 of DKC1 is 40 to 45fps.
So - just to compare -
Gamecube (DKC1) - 485MHz PPC processor - 50 to 55fps
Android (DKC) - ARM Cortex A8 1.2Ghz single-core processor - 40 to 45fps
This sounds shocking and it is - no way should performance be this low.
Audio input latency is shockingly bad on Android - a lot has been written about it already but basically iOS is lightyears ahead of it in this respect - even Blackberry is.
In terms of video blitting speed, things are subpar here as well. You can get a 2x speedup by ditching your stock ROM and going with a Cyanogenmod ROM. SurfaceTexture is only exposed since 4.0 and it's still very incompatible with most GPUs out there - not to mention you need dlopen hacks to even access it.
Overall, Android is not a suitable OS for realtime gaming - especially not emulators. CGW Zero chose wisely not to use it - Steambox likely isn't going with it because of its shortcomings.