How to profile games on iOS device?

Hi guys,

Right now what’s the best method to profile games on iOS device? I can only use some console commands right now, which is not enough. For example, the “stat unit” does not show the “GPU” like PC, and the “Frame” is really high but the “Game” and “Draw” is not high, so I still don’t get the bottleneck.

Furthermore, it seems the profiler in session frontend cannot connect to the device. Maybe I do something wrong, can I use the profiler to profile the game on iOS device remotely right now? Also, is there a way to transfer the profile file to PC recorded by “stat startfile” command from iOS device?

Thank you!

As far as I am aware the best way to profile an IOS device is to use Xcode’s profiling tools on Mac OS X. The current release version of Unreal Engine 4 (4.4.3) does not seem to work all that fantastically well between Windows and IOS devices, so your best bet is using Xcode!

Let me know if you need any more help

Thank you! I didn’t use Xcode’s profiling tools before. I find there are many tools in Instruments of Xcode, so could you give some advice that what tools are better for profiling UE4 project?

pianpian, unfortunately for tiled based GPUs (all mobile chips but nVidia’s Tegra K1), we can’t get timing information per draw call, only the total frame time (it’s a limitation of the way the GPU works). Sounds like you are gpu bound, since the Frame time is a max of GPU, (CPU) Game and (CPU) Render. Take a look in here for some tips for optimization:

Can I use “ProfileGPU” console command now? I tried it on iOS device, after I set RHI.ShowProfilerAfterProfilingGPU=0. The output says: xxxx/Engine/Source/Runtime/ShaderCore/Public/Shader.h(926): Assertion failed: ShaderRef != NULL && *ShaderRef != NULL

That won’t work for Mobile (as I mentioned, we can’t get timing information per draw call). You can only do “stat unit” to see if you are CPU bound (and get total frame time); the Xcode frame stats will also show you how’s gpu perf.