Want to boost your iPhone OpenGL app’s framerate with one checkbox?
It’s easy; turn off Thumb instructions.
What are Thumb instructions?
The iPhone uses the ARM 1176JZ processor,
and Thumb
instructions are 16-bit
versions of common 32-bit ARM instructions. By default, your Xcode
project will compile with Thumb
instructions.
Why use Thumb instructions?
On embedded
systems like the iPhone (or any system, really, but here
especially), you have to think about the space your app uses. Smaller
instructions mean smaller code in memory and on disk. That’s a good
thing! However, there’s a trade-off: performance.
According to Apple,
the cost comes from floating-point operations. Ripping out the
GLfloats from your app isn’t the way to go, so let’s learn a better way.
How do I turn off Thumb instructions?
Here’s what to do in Xcode:
- Open your project
- Choose Project -> Edit Project Settings
- In the Project Info window, choose the Build
tab
- In the search box, type “thumb“
- You should see a “Compile for Thumb” setting.
Uncheck it. (Click image to enlarge.)
- Clean and rebuild your project.
That’s it! If you don’t have the setting, make sure the Active SDK
is set to Device. The setting isn’t applicable to the Simulator.
What kind of frame rate boost will I see?
I had improvements of around 20, 30, and 50%. Hopefully you will see
even bigger ones!