iOS 7.0.3 - Awful performance on iPad 3 whilst excellent results in the Simulator - ios

The program I am developing perform relatively well in the Simulator (I have a MBPR/15" with 4xcpu, 16GB Ram&500G SSD) but is awfully slow on my iPad3.
Xcode doesn't show some huge CPU activity and Memory usage stays at ~25MB.
What could cause this problem?
Thanks in advance for any help

Simulator, is a simulator, that means that your application will run with the hardware of your mac, and your mac is pretty on steroids :-) . Simulator behave very differently for the actual devices just few exaple:
sim is case insensitive
sim is not GPU accelerated (games performs better on device)
it lacks some hardware: camera, motion sensors, GPS
To check why your app is performing slow on iPad you have a lot of tools in instruments.
Time Profile
Allocations
Core animation performance
You've got also some tools on the simulator, like checking blending, not aligned pixels, off screen rendering... thay can make difference in general graphic performace

Related

Xcode iOS Simulator Questions

I have two questions about the iOS Simulator in Xcode for my Unity game:
I am using latest version of all the software involved.
1) Why is it so slow? (I have tried the Cmd+T solution and it does
nothing. Note: The game runs smooth even on a real iPhone 4)
2) Why is the size of the iPad simulator screen bigger than my laptop screen? (I know you can
scale it, but just curious why Apple always tries to make our life
difficult)
When you run game on iOS simulator then your game image runs not completely running on your mobile hardware actually runs in compression mode so seems to be slow.
Having high resolutions Apple deceives have bigger number of pixels on their screen, so its not Screen size but it Screen pixels what we need to concern. And it is for creating more smooth effects on visuals for animation, it is to provide user better quality graphics, not to make your life difficult

iPad Pro simulator + cocos extremely slow on Macbook Air 4 GB RAM

iPad Pro simulators are so slow that they become practically useless when running my cocos2dx game. Theoretical FPS displayed is 60, but all animations take minutes instead of seconds (e.g. 30 seconds instead of a fraction of a second).
I made sure 100 times that Slow Animations are turned off on my simulator.
I've found this topic: iOS Simulator games run very slow (low fps) where the reasons for possible poor simulator performance are explained, but:
First, I can't deduce HOW slow their simulators are (they complain about bad FPS, my theoretical fps is good (???)). I'm getting the impression that they are able to test something while I am not
Second, I need a solution to this problem as I need to test my stuff on an ipad pro 12.9 inch and I don't have the funds to buy one for tests now :) . However, I am thinking on getting a better macbook.
I am using Macbook Air 2014 with 4GB RAM. Do you think this might be the reason? Can anyone tell me whether they are using ipad pro simulators when testing their games (Cocos, Unity, SpriteKit?), and if you get decent speed, then what are your Mac specs that might affect performance (processor, RAM?)
The simulator is not a device and it's performance varies depending on the machine you're running it on, but also the type of device you're simulating.
The iPad Pro devices are both large and have a retina display. The simulator has to process 2732 x 2048 (12.9" 5.6M pixels) and 2048 x 1536 (9.7" 3M pixels). The iPhone 6/6plus and later models have similarly high pixel counts. This takes a lot of CPU+GPU power to render all those pixels.
Your Macbook Air is decent, but it's screen has a much smaller resolution than the simulator and its GPU was chosen with its smaller screen-size in mind. The integrated intel graphics aren't that performant.
If you can test out running the same game/app as a Mac application instead you should see better performance.
My advice:
Use 30fps during daily testing (or when in debug mode) director->setAnimationInterval(1.f/30.f);, if your game requires 60fps for its gameplay then you may want to look into other options.
You can also add one of the non-retina iPad simulators for testing. iPad Mini or iPad 2. Test on the Pro simulators periodically only to check for any positioning/scaling issues.
Render to a small(er) frame buffer and then render the frame buffer scaled up into the final screen buffer.
It is always recommended to get an actual device when doing mobile development as the simulators/emulators don't provide real world performance characteristics.
Even though it's not what you're asking I'd still repeat the key point in the linked answer: Only worry about performance when running on an actual device, and find a way to not have it affect.

Supporting iPad Mini when I need more RAM

I'm developing a game that requires a decent amount of memory. I've optimized it for basically every iOS device that can run 8.0+, except for the iPads with 512MB of RAM. Do I have to support the iPad mini, or could I write a disclaimer stating that it won't run that device. Or is there some way that I can half the size of every image that is loaded by code? What is the best way to go about this?

Why does my app display differently on the iPad than simulator?

I'm fairly new to developing. My app is graphic heavy with some animation using timers. I am testing on a 4th gen iPad retina. In simulator (Xcode 5) the timers I have going for animations run slower than on the iPad, and some other graphic features (like things fading in and out) don't work the same in simulator as the iPad build. Should I trust the iPad's build and not the simulator? Should I also test on different iPad models to check if the graphic animations run correctly on different models or are they likely to run the same?
I focus on UI art & have experience with making graphics rather than dealing with the Xcode environment itself, so any info about how programmed animation views display on different devices or different environments would be really helpful.
Rule one of developing apps: Always test on a hardware device
The hardware device has a ARM CPU for dealing with normal stuff like calculations and a GPU to accelerate the graphics. The GPU's on iOS devices are pretty powerful and comparable with GPU's of desktop computers a few generations back. Your simulator does not have that and will have problems rendering some of the more heavy stuff because it simulates the device and does not run directly on actual hardware.
I would also suggest that you check out the slowest device possible for the iOS generation you will be targeting in hardware. For instance an iPhone 3GS will still run iOS 6 applications. So if you are targeting iOS 6 or better and it runs well on that device, it will be doing fine on all others in terms of performance.

A cocos2d program with low frame

I start a iPad game using cocos2d..
When I add a full screen image as its background, the frame decreases to 30..
Is there any way to improve it?
Did iOS Simulator cause this?
CCSprite *background = [CCSprite spriteWithFile:#"demoBackground.png"];
background.position = CGPointMake(winSize.width/2, winSize.height/2);
[self addChild:background];
try to run the app on the real iPad. I had similar issue with images for retina screen. On the simulator it was incredible slow (fps) but on the iPod was very smooth.
I have always found that FPS on Sim for Cocos projects is much lower than on device. You should never pay attention to FPS on a simulator. Always load your projects on a device. This isn't the only reason why. Consider memory usage. With the Sim, you can load all sorts of stuff, but your app may immediate crash on device because they have much less memory available. In general, test your apps on Device. Those natural Memory Warnings that iOS sends your app's delegate will only occur on Device as well, and it's very good to know when you've hit Level 2 warnings, and you won't see that in Sim (at least I never have).
I only use the Sim for testing general positioning and layout results with my code. I never test performance or interactivity on the Sim.
Are you measuring the framerate of the Simulator? That would render your question moot. Simulator performance is irrelevant and misleading as you're only measuring how fast your Mac can run the Simulator. All of your users will be running your app on a device.
On an actual device, a single fullscreen background image will not drop the framerate. You need to be doing a lot of other things as well to drop the framerate below 60 fps even on a 1st generation iPad.

Resources