Improve Floating Point Performance by Disabling Thumb
It's a little known fact that the iPhone ARM processor can sometimes be a little slow at doing FPU calculations, this is one of the reasons Fast Fourier Transforms on the iPhone are done using radix versions than traditional floating point versions. Unfortunately not everything can be done using fixed-point transforms, especially when using vanilla C libraries designed to compile for different platforms. Not a whole lot can be done when trying to tackle the slow floating point problem on a practical level, however sometimes you will find it beneficial to disable the compiler generating optimised 'thumb' assembly. Thumb runs in 16-bit operands which improves performance and memory usage when doing regular operations, but can sometimes lead to slow floating point processing due to code having to switch back and forth from the 16-bit operands to the 32-bit operands. I find it useful when I'm making an app that relies heavily on sound processing or physics engines to toggle Thumb and see if I can gain any performance benefits:
