Performance profiling on Android

Streamline analyzes scenes in your game as it runs on an unrooted Android device, and provides you with a performance profile, to help you identify problem areas in your game, and discover opportunities to optimize performance. Work with interactive charts and data to understand how the CPU and GPU workloads are handled by the device.

Get started

Capture a performance profile with Streamline

Learn how to use Streamline to capture a performance profile of your application running on an Android device.

Watch on YouTube

About Streamline

With Arm Streamline, you can:

  • Find hot spots in your code to be targeted for software optimization.
  • Identify the processor that is the major bottleneck in the performance of your application.
  • Use CPU performance counters to provide insights into L1 and L2 cache efficiency, enabling cache-aware profiling.
  • Identify the cause of heavy rendering loads that cause poor GPU performance.
  • Use GPU performance counters to identify workload inefficiencies.
  • Reduce device power consumption and improve energy efficiency by optimizing workloads
    using performance counters from the CPU, GPU, and memory system.

CPU performance

For CPU bottlenecks, use the native profiling functionality to locate specific problem areas in your application code. Investigate how processes, threads, and functions behave, from high-level views, right down to line-by-line source code analysis. The basic profile is based on regular sampling of the PC (Program Counter) of the running threads, allowing identification of the hotspots in the running application. Hardware performance counters that are provided by the target processors can supplement this analysis. These counters enable hotspot analysis to include knowledge of hardware events such as cache misses and branch mispredictions.

GPU performance

For GPU bottlenecks, use performance data from the Mali™ GPU driver and hardware performance counters to explore the rendering workload efficiency. Visualize the workload breakdown, pipeline loading, and execution characteristics to quickly identify where to apply rendering optimizations.

Want to profile Linux or bare-metal targets?

The version of Streamline available in Arm Mobile Studio is suitable for profiling Android applications only. If you want to profile Linux or bare-metal targets, you need Arm Development Studio, which contains a version of Streamline with these capabilities.

Arm Development Studio

Analyzing a Streamline capture

This video walks you through how to analyze a Streamline capture, showing how to interpret the charts to evaluate game performance.

Capture a profile

Learn how to capture a performance profile of your game running on an Android device.

Get started

Android performance triage

Once you've taken a capture, learn how to interpret the charts in Streamline to find optimization opportunities. 


Mali GPU counters

See detailed descriptions of all the performance counters available for each Mali GPU.

Counter reference


Learn how to configure and use Streamline to profile your Android games on an unrooted device.

Read the guides

Download the Arm Mali GPU datasheet

See the different features and capabilities of Arm Mali GPUs from the Midgard-based Mali-T720, to the Valhall-based Mali-G78.

Download the datasheet

Optimize for 64-bit architecture

Most of today’s mobile devices are based on Arm’s 64-bit architecture and when games and applications take advantage of this, they can get some great performance gains. Streamline supports 64-bit by default in all versions making it easy to tweak applications to get the very best performance.

Annotate your code to link notable sections with performance data

Streamline enables you to annotate code in an application or game. This allows the user to relate parts of their code with the performance data that gets generated. This is customizable by each user, but examples include: seeing how long their physics takes per frame, or whether their job manager is scheduling things effectively.