A very important distinction to make: The iPhone simulator is not an emulator. It essentially runs your iPhone application as a Mac application in a very thin wrapper that makes it appear to be running in an iPhone OS-like environment. Consequently, any OpenGL rendering is done natively and will have the characteristics of OpenGL on the Mac, which will have very different performance constraints.

Taxxodium: Well, he was saying it runs fine on the device, but slow on the simulator.
However, ThemsAllTook was still right in that there are different factors for each, so just testing on the device is the best idea. If it runs fine on the device, don't worry about the simulator .
Alex

Edit: On a random note, doesn't apple reccomend (pretty much require) that all graphic stuff be done in the main thread? Or is that only for UIKit stuff?

Quote:It is important to understand that rendering performance of OpenGL ES in Simulator has no relation to the performance of OpenGL ES on an actual device. Simulator provides an optimized software rasterizer that takes advantage of the vector processing capabilities of your Macintosh computer. As a result, your OpenGL ES code may run faster or slower in OS simulator (depending on your computer and what you are drawing) than on an actual device. You should always profile and optimize your drawing code on a real device and never assume that Simulator reflects real-world performance.

And not to beat a dead horse, but it really is a simulator, and there really is a technical distinction between the two. As themsalltook pointed out, it's actually running the code natively on your Mac while providing an API that looks like the iPhone's API but performing nothing like it. I'm sure Apple chose to use a software renderer because they didn't want to run into issues where you are mixing and matching features or behaviour of the native GPU and the iPhone's GPU.

As to your actual question about why this is slow, so that you can better test on the simulator: have you tried running Shark to find out where all the CPU time is spent?

No one expects that the emulator should be the same speed as the device, but if it's running at one frame per second, then the emulator is effectively useless! An that's my problem. The answer given seemed to be unrelated to my problem.
I'm sorry if I offended anyone.

OK, I'll bite... The previous answers are related to your problem, but you seem to be ignoring the main point...

The simulator is not a device, it's not even an emulation of a device and it does and will behave differently than a device. Sometimes the simulator is faster, sometimes it's slower, sometimes it crashes, sometimes it does unholy crap like you've described. If you think you found a bug with the simulator then you should file a bug report with Apple.

Bottom line: There's not much point trying to fix your code to run better in the simulator. If you want to make a robust iOS game you have to test on devices - lots of devices. The simulator can be a handy tool but it's not a critical component - pretend it doesn't exist and you'll be fine.

No big whoop. Internet communication is very cold and impersonal. Doesn't help that we aren't all from the same country, much less the same state of mind

Folks can't always read and address your post directly on the first pass, and so it is often better to respond with what little other relevant information someone may have. In this case, it was pretty good information that ThemsAllTook gave you to help you look in a different direction to solve the issue. Honestly, if you gotta be mad at someone, he's the wrong guy to be mad at.

Final point: It is in fact a simulator, not an emulator. As has been said a whole bunch already, that is part of your problem, even though it doesn't address it directly. No need for me to repeat the details.