Device Benchmarking & Testing

Mobile Gaming Performance: FPS Stability and Frame Time Analysis

Lena Torres, RF & Connectivity Engineer August 17, 2026 11 min read

A phone that averages 119 FPS can feel worse than one locked at a stable 60 FPS. For competitive mobile gaming, consistency beats peaks. This benchmark framework shows how to quantify stutter, track thermal-induced throttling, and evaluate true playability.

Most gaming reviews still headline with a single number: average frames per second. For system designers and RF engineers, that number hides more than it reveals. Two devices can report an identical 59.8 FPS in Genshin Impact, yet one delivers buttery panning while the other visibly hitches during combat. The difference is not throughput — it is timing variance.

This analysis breaks down the frame time pipeline from application to photon, defines stability metrics that correlate with human perception, and presents a reproducible test rig for continuous 30-minute thermal stress. If you are validating a SoC, tuning a game, or choosing a daily driver for esports, stability testing is the only metric that matters.

1. Why Average FPS Is a Misleading Metric

Average FPS is an arithmetic mean over hundreds or thousands of frames. It collapses a complex distribution into one number, completely obscuring outliers. A 60-second session at 60 FPS contains 3,600 frames. If 3,540 frames render in 16.6ms but 60 frames spike to 45ms due to shader compilation or thermal throttling, your average remains 58.9 FPS — nominally excellent. Yet the player experienced 60 distinct hitches, one per second.

Perceptual research shows the human visual system is acutely sensitive to change in motion, not absolute rate. A locked 45 FPS often feels smoother than a variable 55-60 FPS because the velocity is predictable. This is why competitive titles like PUBG Mobile and Call of Duty: Mobile offer 60, 90, and 120 FPS caps. A stable cap reduces DVFS hunting and lets the compositor schedule consistently.

Key Distinction: FPS answers “how many frames did you draw?” Frame time answers “when did each frame arrive?” Stability is about when, not how many.

In our lab, we therefore prioritize three stability derivatives over averages: 1% and 0.1% lows (the worst 1% of frames), frame time standard deviation, and jank percentage — the share of frames exceeding the target budget by >50%.

2. Frame Time Anatomy & The 16.6ms Budget

At 60Hz, each frame has exactly 16.67ms to be produced and presented. At 120Hz, that budget halves to 8.33ms. Miss the v-sync deadline and the Hardware Composer holds the previous frame, creating a duplicate that the eye perceives as a stutter. Miss by a small margin repeatedly and you get micro-judder. Miss by a large margin and you get a visible freeze.

Mobile Connectivity Standards Comparison
Feature 5G NR Wi-Fi 7 Bluetooth 5.4
Peak Throughput20 Gbps46 Gbps2 Mbps
Latency1–4 ms1–2 ms3–6 ms
RangeSeveral km30–50 m100–400 m
Power DrawHighMediumUltra-low
Primary UseCellular dataLocal networkingPeripherals/IoT

A single frame traverses five major stages:

  1. Game Logic & CPU Submission (2-4ms): Physics, AI, and draw call preparation on big cores.
  2. Render Thread & Driver Overhead (1-3ms): Vulkan/OpenGL command buffer translation. Sensitive to CPU frequency.
  3. GPU Execution (4-9ms): Vertex, fragment, and compute. Scales with resolution and shader complexity.
  4. SurfaceFlinger / Hardware Composer (0.5-2ms): Compositing and buffer queue management. A common source of extra latency if triple-buffering is forced.
  5. Display Scanout (0-16ms until next v-sync): The panel reads the buffer. On LTPO displays, variable refresh can hide minor variance.

Tools like Android's dumpsys gfxinfo framestats and Snapdragon Profiler expose per-stage timing, but for benchmarking we aggregate to frame-to-photon latency. The distribution shape tells you where to optimize: a long-tailed distribution with spikes typically indicates thermal throttling or garbage collection; a wide, noisy distribution suggests unstable CPU governor behavior.

Understanding the mobile RF frontend architecture is also relevant, as sustained modem activity for multiplayer gaming adds thermal load to the SoC package, directly competing with the GPU thermal headroom.

3. Lab Methodology: How We Measure Stability

To create reproducible stability data, we built a rig that avoids the pitfalls of in-game FPS counters, which often sample only the render thread.

Hardware & Environment

Software Capture

We log every vsync interval at nanosecond resolution. On Android 14+, FrameTimeline via Perfetto gives GPU completion timestamps without root on user builds. For older devices, we use a lightweight overlay that hooks SurfaceView.

adb + perfetto frame captureShell
# Start Perfetto trace with FrameTimeline & CPU freq
adb shell perfetto -c - --txt -o /data/misc/perfetto-traces/trace.pftrace <<EOF
buffers: { size_kb: 81920 }
data_sources: {
  config { name: "linux.ftrace"
    ftrace_config {
      ftrace_events: "sched/sched_switch" 
      ftrace_events: "power/cpu_frequency"
      ftrace_events: "gfx/*"
    }
  }
}
data_sources: { config { name: "android.frame_timeline" } }
duration_ms: 1800000  # 30 min thermal soak
EOF

# Pull and convert to frame time CSV
adb pull /data/misc/perfetto-traces/trace.pftrace .
traceconv --to-csv trace.pftrace > frametimes.csv

# Quick jank classification (python)
# jank = frame_time > target * 1.5  (25ms @ 60Hz, 12.5ms @ 120Hz)

Each test consists of a deterministic 30-minute sequence: 10 minutes of open-world traversal, 10 minutes of combat/particle-heavy load, and 10 minutes of repeated stress loop to force thermal steady-state. We run three passes and report the median. Critically, we do not reboot between phases — we want the throttling curve.

This approach mirrors rigorous mobile API performance and edge delivery testing where tail latency (p95/p99) matters more than median latency for user experience.

4. Thermal, DVFS & The Display Pipeline

The single largest driver of frame time variance on modern flagships is not shader complexity — it is temperature. Sustained gaming pushes skin temperature toward the 43-45°C regulatory limit, triggering a cascade.

Mobile Frame Pipeline & Thermal Feedback Loop Block diagram showing CPU, GPU, Composer, Display pipeline with DVFS and thermal feedback FRAME PIPELINE & THERMAL GOVERNOR LOOP CPU CLUSTER Game Logic Draw Calls • 2-4ms BIG CORES @ 2.8GHz → GPU Adreno / Mali Shading • 4-9ms FREQ HUNTING ±18% COMPOSITOR SurfaceFlinger HWC • 0.5-2ms DISPLAY LTPO 1-120Hz V-Sync Scanout THERMAL GOVERNOR & DVFS FEEDBACK Skin: 44°C → Throttle CPU -15% • GPU -22% Frame Budget EXCEEDED Repeat • Jank Spike 31ms • User Perceives Freeze STABILITY METRICS ●Avg FPS — 60.0(hides variance) ●1% Low — 38 FPS= 26.3ms worst frame ●σ Frame Time 4.8msHigh = micro-judder ●Jank >8.3% @120HzFeels broken ●Target Delta16.6ms @60 • 8.3ms @120
Fig 1 — End-to-end frame pipeline with thermal governor feedback. DVFS reductions propagate as frame time spikes visible to the player.

Phase 1 (0-8 min): SoC at peak — CPU big cluster at 3.1GHz, GPU at 900MHz. Frame times tightly clustered around 12ms for a 60 FPS title with ~4ms budget headroom. Std deviation <1.2ms. Jank <1%.

Phase 2 (8-18 min): Skin sensor near 42°C. Kernel thermal daemon steps GPU down in 70MHz increments. CPU migrates threads to efficiency cores. Frame time distribution widens; you see a bimodal histogram — most frames still on target, but periodic 22-28ms spikes as DVFS transitions stall the pipeline.

Phase 3 (18-30 min): Steady-state throttling. Some OEMs implement aggressive frame capping (e.g., lock to 45 FPS) to stabilize timing. This is perceptually superior to allowing oscillation between 58 and 42 FPS, but benchmark headlines rarely capture it.

Passive cooling design, vapor chamber size, and even mobile camera autofocus PDAF/laser modules placement can affect thermal maps — a heat pipe routed near the camera island can create a localized hotspot that triggers early sensor throttling even while the SoC is still within limits.

5. Comparative Results: 60 vs 120Hz Stability

We ran the same 30-minute Genshin Impact test (Highest Settings, 60 FPS cap and 120 FPS cap where supported) on four 2025-26 flagships with active cooling disabled. Ambient 23°C. Values are median of three runs.

Device (SoC / Cooling)Target / Avg FPS1% Low (FPS)Frame Time σJank %*Verdict
Device A
8 Gen 3 • Vapor Chamber 4,200mm²
60 / 59.651.31.4 ms2.1%Locked Stable
Device B
8 Gen 3 • Vapor Chamber 3,800mm²
60 / 58.942.73.1 ms7.8%Bursty Jank
Device C
Dimensity 9300 • Graphite Only
60 / 58.136.24.8 ms13.4%Throttle Heavy
Device D
8 Gen 3 • Active Cooler Clip
120 / 112.478.11.9 ms4.2%Excellent @120

*Jank = frames exceeding 150% of target interval ( >25ms @60Hz, >12.5ms @120Hz ). 120Hz test throttled to 112.4 avg but maintained low variance due to external cooling.

Several insights emerge. Device A and B share the same SoC, yet Device A maintains 2.1% jank while B shows 3.7× more. The difference is thermal mass and governor tuning, not silicon. Device C's graphite-only solution collapses after minute 14, with 0.1% lows dropping to 28 FPS — unplayable in abyss combat. Device D demonstrates that even at 120Hz, a tight distribution with modest under-average performance feels better than a higher average with wild swings.

Note on power: Device D with the cooler clip burned 11.2W sustained vs. 7.8W for Device A. Without the clip, the same phone throttled to 67 FPS at 120Hz mode with 11.9% jank. Battery and thermal budgets are fungible — OEMs choosing thin and light trade sustained stability for burst performance. Secure hardware like the NFC secure element for mobile payments also shares the PMIC rail, and we observed 80-120mW extra draw during background wallet polling, enough to tip borderline devices into throttling one minute earlier.

6. From Jank to Flow: Optimization Checklist

Whether tuning a game or building a device, stability work focuses on removing variance sources.

For Gamers & Reviewers

For Developers & OEMs

Testing Tip: Do not trust 5-minute benchmarks. Run at least 20 minutes and plot frame time histogram, not just average. A clean histogram is narrow and Gaussian; a throttling device shows a widening tail and secondary peak around 2× target interval. That tail is what players feel.

The broader lesson connects to all mobile subsystems — autofocus motors, RF chains and payment SEs compete for the same power and thermal envelope. Holistic system tuning, as explored in our edge delivery performance guide, wins over isolated component maximization.

In short: advertise stability, not peaks. A device that delivers 58.5 FPS with 1.6ms σ and 2% jank is objectively better for gaming than a device that advertises 61 FPS but stutters 14% of the time. As 120Hz LTPO becomes standard and ray tracing arrives on mobile GPUs, the timing budget will only tighten — making frame time analysis indispensable.

Frequently Asked Questions

What is the difference between FPS and frame time?

FPS counts how many frames were rendered per second, an average. Frame time measures how long each individual frame took in milliseconds. At 60Hz the budget is 16.6ms per frame; frame time reveals stutters that average FPS hides, such as a single 45ms hitch in an otherwise smooth session.

What is jank and what jank percentage is acceptable?

Jank is a frame that misses its v-sync deadline, typically defined as >150% of the target interval (>25ms at 60Hz, >12.5ms at 120Hz). Under 3% jank is excellent, 3-6% is noticeable to sensitive players, and above 8% feels consistently stuttery. Competitive players should target <2% over a 30-minute thermal soak.

Why does my phone slow down after 10-15 minutes of gaming?

Thermal throttling. The SoC reduces CPU and GPU frequencies when skin temperature approaches 43-45°C to protect the user and battery. This adds 5-15ms to frame time, creating periodic stutter. Better cooling, lower graphics settings, or capping FPS to 60 reduces heat and stabilizes performance.

Is a stable 60 FPS better than fluctuating 90-120 FPS?

For most players, yes. The visual system is more sensitive to variance than absolute rate. A locked 60 FPS with 1.4ms standard deviation feels smoother than 90 FPS that swings between 72 and 90 FPS with 4ms deviation. Lock to the highest refresh rate your device can sustain with <3% jank.

References & Standards: USB Implementers Forum · IEEE 802.11