Mobile Game Performance Profiling: Tools and Methods

The complaint "the game is lagging" is not a diagnosis. It lags because the CPU can't keep up with the GPU, because the GC is collecting garbage, because textures don't fit in VRAM, because the shader is too heavy for an Adreno 618, or because Metal's behavior changed on iOS. Without a profiler, it'

Development and support of all types of mobile applications:

Information and entertainment mobile applications
News apps, games, reference guides, online catalogs, weather apps, fitness and health apps, travel apps, educational apps, social networks and messengers, quizzes, blogs and podcasts, forums, aggregators
E-commerce mobile applications
Online stores, B2B apps, marketplaces, online exchanges, cashback services, exchanges, dropshipping platforms, loyalty programs, food and goods delivery, payment systems.
Business process management mobile applications
CRM systems, ERP systems, project management, sales team tools, financial management, production management, logistics and delivery management, HR management, data monitoring systems
Electronic services mobile applications
Classified ads platforms, online schools, online cinemas, electronic service platforms, cashback platforms, video hosting, thematic portals, online booking and scheduling platforms, online trading platforms

These are just some of the types of mobile applications we work with, and each of them may have its own specific features and functionality, tailored to the specific needs and goals of the client.

Showing 1 of 1All 1734 services
Mobile Game Performance Profiling: Tools and Methods
Medium
~2-3 days

Our competencies:

Frequently Asked Questions

Latest works

  • image_mobile-applications_feedme_467_0.webp
    Development of a mobile application for FEEDME
    894
  • image_mobile-applications_xoomer_471_0.webp
    Development of a mobile application for XOOMER
    782
  • image_mobile-applications_rhl_428_0.webp
    Development of a mobile application for RHL
    1216
  • image_mobile-applications_zippy_411_0.webp
    Development of a mobile application for ZIPPY
    1079
  • image_mobile-applications_affhome_429_0.webp
    Development of a mobile application for Affhome
    1002
  • image_mobile-applications_flavors_409_0.webp
    Development of a mobile application for the FLAVORS company
    597

The complaint "the game is lagging" is not a diagnosis. It lags because the CPU can't keep up with the GPU, because the GC is collecting garbage, because textures don't fit in VRAM, because the shader is too heavy for an Adreno 618, or because Metal's behavior changed on iOS. Without a profiler, it's guesswork. With one—concrete numbers and a concrete culprit.

We have profiled over 100 mobile games—from hyper-casual to AA projects. With 5+ years on the market, we have built a database of typical problems and ready-made solutions. In this article, we break down how we find bottlenecks and what the deliverable includes. If you need a quick performance evaluation of your game, contact us—we can assess your project in 1-2 days.

How We Profile Mobile Game Performance

The process consists of several stages. First, we select the target device—the one where the game lags. Then we attach profilers and collect data for at least 10 minutes of gameplay to capture throttling. After analysis, we deliver a report with specific metrics.

Unity Profiler is the starting point. Deep Profile mode slows the game but shows all calls with allocations. It connects to a build via Development Build + Autoconnect Profiler or over USB. We always profile on the device, not the editor: the editor has different GC, render backend, and latencies.

Key markers in the CPU trace:

  • GC.Collect — garbage collection spikes. If >1 ms and occurs more than once every few seconds, there's an allocation problem in a hot path.
  • Camera.RenderRenderForwardOpaque.Render — main GPU load.
  • Physics.Processing — physics. If >3 ms with a 60 FPS budget, there are too many colliders or suboptimal Fixed Timestep settings.

Android GPU Inspector (AGI) — for Android on Qualcomm or Mali. It shows GPU time per draw call, pipeline bubbles, ALU utilization. Critical for understanding what is heavy on the GPU: geometry, overdraw, or fill rate. According to AGI documentation, pipeline bubbles can account for up to 40% of frame time on older devices.

Xcode Instruments — for iOS. We use Metal System Trace for GPU, Time Profiler for CPU, and Allocations for memory. Thermal State in Instruments shows when the device starts throttling due to overheating—a common cause of unstable FPS after a few minutes of gameplay.

Snapdragon Profiler — an alternative to AGI for Adreno. Simpler to set up for snapshot mode, it shows shader efficiency well. Compared to AGI, AGI is twice as accurate in detecting pipeline bubbles.

How to Differentiate CPU-bound from GPU-bound

Sign of CPU-bound: VSync waits less than 1 ms for GPU (GPU finishes early), but the frame still takes 20+ ms. The CPU is the bottleneck.

Common culprits: heavy logic in Update(), LINQ queries in hot paths (each creates an allocation), or FindObjectsOfType inside Update (O(n) over all scene objects). In Memory Profiler, this shows as constant GC.Alloc of several KB every frame.

Solution: switch to Data-Oriented Technology Stack (DOTS/ECS) for mass objects, or at least cache results, replace LINQ with explicit loops, and use event-driven architecture instead of polling.

Sign of GPU-bound: GPU time is high, but Draw Call count is low. In AGI, high Fragment Shader time is visible.

Overdraw—drawing the same pixels multiple times due to overlapping transparent objects. In Unity, you can see it in the Overdraw view of the Scene View. Dark red areas mean each pixel is drawn 4+ times. Common in 2D games with many particle layers.

Solution: sort transparent objects, limit the number of simultaneous active particles, replace transparent sprites with opaque ones where artistically possible.

Why Thermal Throttling Is a Frequent Issue

On an iPhone, after a few minutes of intense gameplay, the processor temperature reaches the threshold, and iOS reduces CPU/GPU frequency. FPS drops from 60 to 40–45 without any change in in-game load. This is checked via ProcessInfo.thermalState (iOS)—at .serious or .critical, it's worth reducing graphics quality preemptively.

On Android, a similar mechanism is PowerManager.getThermalHeadroom() (API 29+). In 70% of cases, throttling starts after 5-7 minutes of gameplay.

What Our Profiling Report Includes

After profiling, we deliver a report with specific markers: what lags, on which device it reproduces, how many ms it takes, and a fix recommendation with priority. Not "optimize physics" but "FixedUpdate in EnemyAI.cs calls Physics2D.OverlapCircleAll every 20 ms with 200 active enemies—total 4.2 ms CPU; rewrite to Physics2D.OverlapCircleNonAlloc with a result pool."

Example report structure - Problem: GC spike every 5 seconds (20 ms) - Cause: string allocations in Update() - Recommendation: replace with StringBuilder, priority High - Expected effect: GC time reduced to 2 ms

Additionally, we provide:

  • access to profiling logs and screenshots,
  • team training on tool usage,
  • support during fix implementation for 10 working days.

Timeline: audit and report in three working days. Implementation of fixes based on results is a separate estimate starting from 5 days.

Tool Platform Primary Purpose
Unity Profiler iOS/Android CPU and GC profiling
Android GPU Inspector Android (Qualcomm/Mali) GPU pipeline, shader efficiency
Xcode Instruments iOS GPU, CPU, Memory, Thermal State
Snapdragon Profiler Android (Adreno) Alternative to AGI for Adreno

Comparison of tools for bottleneck detection accuracy:

Feature Unity Profiler AGI Xcode Instruments
CPU bound Excellent None Excellent
GPU bound Medium Excellent Excellent
Thermal throttling Indirect None Direct
Overdraw Medium Excellent Good

We guarantee every measurement is accurate—all results are reproducible on identical devices. Certified engineers (Unity Certified Developer, Apple Certified iOS Developer) conduct the audit. Experience: 5+ years and 100+ projects. Get a consultation for your project—contact us to discuss the details.