I recently bought an Asus Fonepad partly because I wanted to test an Intel based Android device. It turned out it's a really nice device and surprisingly almost everything I tried on it worked well. I didn't expect this since many apps contains native code and a lot of them only comes with native code compiled for ARM based devices.
After some research I found out that Intel based Android devices comes with a library (libhoudini.so) that uses binary translation to translate native ARM code into native x86 code. This explains the very good app compatibility but it also made me wonder how much performance we give up for compatibility.
As I noticed that the Epic Citadel app performed almost identical on my Nexus 4 and the Fonepad I had a look into the apk and noticed it comes with native code for both ARM and x86 devices. That gave me an idea and I created two versions of the apk. On version only contains the native ARM code and the other only the native x86 code. That allowed me to do a comparison and here's the results.
The tests was made on an Asus Fonepad with firmware version 3.1.17 and version 1.0.5 of the Epic Citadel app.
First out is the version with only native ARM code:
Then another run with the version with only native x86 code:
As you can see the version with native x86 code scored over 40% better compared to the version that relied on binary translation.
So while the binary translation is a good thing for compatibility there is also a risk that developers takes the easy route and decides not to include native x86 code for their apps.