I’ve had plans to create some kind of performance measurement app for iPhone/iPod/iPad for quite a bit time of already, and after reading recent reports that iOS 4 is very slow on iPhone 3G I thought that time had finally come.
So I’ve quickly coded an app which computed performance in MD5 hash computations per second, and here are the results:
|Device||CPU Frequency||Thousands MD5 per second|
|iPhone 3G||412 MHz||350|
|iPhone 3GS||600 MHz||
The performance scales almost linearly (with respect to CPU frequency) for iPhone 3GS and iPad.
For iPhone 3G this is, however, not the case. Although CPU clock is only 1.5 times slower when compared to iPhone 3GS, overall performance is three times slower.
Puzzled, I did some research and found out that iPhone 3G and iPhone 3GS are using very different CPU cores indeed (link). The key difference is that iPhone 3GS uses dual-issue superscalar CPU which allows executing two instruction per clock. iPhone 3G utilized single-issue scalar core, and is thus limited to executing single instruction per clock. This perfectly explains missing factor of two in performance vs. clock rate difference between iPhone 3G and 3GS.