At the moment I’m playing around with writing a cross platform game library, because that’s what all the cool kids are doing. One of the parts I’m not particularly looking forward to is writing a math library for the rendering. Fortunately, far greater programmers than I have done so already. In fact, many greater programmers have. Three seem quite popular: CML, Eigen and GLM.
Being lazy I searched around to find out which one seemed fastest or easiest to use with mobile, and I found a very useful post on the three common ones at http://www.mfoot.com/2012/01/choosing-a-maths-library-for-cross-platform-c-game-development/. Unfortunately, the tests had been run only on desktop and Android, so I’ve forked the repository and added an iOS runner for the tests. You can find it at:
I also added a branch with the current latest source code for each of the libraries:
A full description of the tests can be seen in the source code, or you can read through the original article by Martin.
Here are the results for running it on my iPhone 4 with the original library versions:
iOS release build Eigen additions 2515 Eigen multiplications 6915 GLM additions 3549 GLM multiplications 7347 CML additions 3004 CML multiplications 11511 (Timings in milliseconds. Smaller is better.)
And once more with the latest library versions:
iOS release build Eigen additions 2161 Eigen multiplications 6721 GLM additions 3340 GLM multiplications 5865 CML additions 2964 CML multiplications 11112 (Timings in milliseconds. Smaller is better.)
I haven’t fiddled with compile settings beyond using a release build, so it’s quite likely the performance can be improved.
I think, for the moment, I’ll use GLM for a couple of reasons: it’s geared towards OpenGL use rather than being a generic linear algebra library, and it has more straightforward MIT licensing.