Jump to content


Photo

Comparison between binary translation and native x86 code


  • Please log in to reply
4 replies to this topic

#1
kallt_kaffe

kallt_kaffe

    Hardcore

  • Developer Team
  • PipPipPipPipPipPip
  • 1,185 posts
  • Gender:Male
  • Devices:Nexus 4 + 10 + Asus Fonepad
I did a little expirement with the Epic Citadel app as it contains both native ARM and native x86 code. I made one APK with only native x86 code and one with only native ARM code and ran the benchmark once for each version. The result was that the version with native x86 code that did not have to rely on the binary translation (ARM to x86 code translation done on-the-fly by the libhoudini lib) resulted in a more than 40% better benchmark result than then version that relied on binary translation.

Some more info about the tests and screenshots here: http://blog.apedroid...e-x86-code.html

  • 1
Blog - App

#2
steveg271

steveg271

    Newbie

  • Members
  • Pip
  • 11 posts
  • Devices:huwai ascend g300
That's very interesting, thanks.

Is there an easy way to tell if an app has x86 code in or just ARM?

  • 1

#3
kallt_kaffe

kallt_kaffe

    Hardcore

  • Developer Team
  • PipPipPipPipPipPip
  • 1,185 posts
  • Gender:Male
  • Devices:Nexus 4 + 10 + Asus Fonepad
Asfaik the only way is to check the .apk file. Open it with your favorite zip-utility and check the lib folder. If only contains a armeabi-something folder then it only has native ARM code. If it also contains an x86 folder then it has native x86 code. If it does not have a lib folder at all then it doesn't use any native code so ARM or x86 won't matter.

However since there is no known way to root the Fonepad you cannot pull the apk's from it so you'll have to download the apps on a rooted device and "steal" the them from /data/app/ if you want to have a look at them.

I suppose there may be some clues in the log when starting apps that uses binary translation. I haven't looked but I suppose it could be possible to detect it with "adb logcat". Anyone tried it?

Short answer: No, there's no easy way that I know of.

  • 1
Blog - App

#4
kallt_kaffe

kallt_kaffe

    Hardcore

  • Developer Team
  • PipPipPipPipPipPip
  • 1,185 posts
  • Gender:Male
  • Devices:Nexus 4 + 10 + Asus Fonepad
If you are familiar with adb then you can run this:
shell@android:/ $ logcat |busybox grep houdini

When you start an app that uses binary translation it will print this:
D/houdini ( 7945): [7945] Loading library(version: 3.1.3.43168 RELEASE)... successfully.

Apps that I tried that uses binary translation: Netflix, Max Payne, Daddy as a thief, Spotify.

If unsure which app trigger the lib then you can run the "ps" command and match the PID with the app the used the lib.

Example: http://blog.apedroid...ses-binary.html

  • 1
Blog - App

#5
aleckxander

aleckxander

    Regular

  • Members
  • PipPip
  • 91 posts
I'd love to buy this device, but, sadly, it seems like the community do not like intel processors a lot; this is easily translated into no easy root, recovery, roms, etc...
Hopefully now that the asus note 6.0 has been announced and still equipped with an intel CPU, developers will give some more love to the fonepad too ;)

by the way Kallt_kaffe (that i used to love some years ago due to the zte blade, that i still use ;) ) underlines interesting stuff. My question is.. what is going to affect this loss of benchmark performance. Battery life? start up time of the application? or the apps will run simply slower?

  • 0




0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users