# Profile Android game performance in Godot with Arm Performance Studio

## In this learning path

- [Introduction](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/godot_packages/)
- [Profile your Godot game with Arm Performance Studio](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/godot_packages/profile-godot-with-aps/)
- [Install the Arm Performance Studio extension in Godot](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/godot_packages/install-extension/)
- [Annotate Game Events for Profiling in Godot](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/godot_packages/add-markers/)
- [Define performance regions in Godot](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/godot_packages/define-regions/)
- [Use channels for threaded performance annotations](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/godot_packages/use-channels/)
- [Create and track custom counters in Godot](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/godot_packages/create-counters/)
- [Use custom activity maps in Godot profiling](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/godot_packages/use-custom-activity-maps/)
- [Next Steps](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/godot_packages/_next-steps/)

## About this Learning Path

| Skill level:         | Introductory         |
|----------------------|----------------------|
| Reading time:        | 15 min               |
| Last updated:        | 19 Aug 2026          |

### Authors:

- Albin Bernhardsson
- Julie Gaskin, Arm

### Arm IP:

- [Cortex-A](https://support.arm.com/?tab=compute-ip&Product%20Type=Application%20Processors)
- [Mali](https://support.arm.com/?tab=compute-ip&Product%20Type=Graphics%20Processors)

### Tags:

- [Performance and Architecture](https://www.arm.com/tag/performance-and-architecture)
- [Windows](https://www.arm.com/tag/windows)
- [macOS](https://www.arm.com/tag/macos)
- [Linux](https://www.arm.com/tag/linux)
- [Godot](https://www.arm.com/tag/godot)
- [Arm Performance Studio](https://www.arm.com/tag/arm-performance-studio)

### Who is this for?

This is an introductory topic for Godot developers targeting Android devices who want to optimize game performance on Arm CPUs and Mali GPUs using Arm Performance Studio tools.

### What will you learn?

Upon completion of this Learning Path, you will be able to:

- Install the Arm Performance Studio Integration extension in Godot
- Annotate your Godot game with performance markers for profiling in Streamline and Performance Advisor

### Prerequisites

Before starting, you will need the following:

- Familiarity with Godot
- Familiarity with Arm Performance Studio tools

### Summary

You’ll instrument a Godot project with Arm Performance Studio Integration and profile it on an Arm-based Android device. First, you’ll add event markers, regions, and channels to capture work across threads. Then, you’ll inspect annotations in Streamline and use Performance Advisor charts to investigate frame rate, CPU, and GPU bottlenecks.

### Frequently asked questions

<details>
<summary>Which Godot versions does the Arm Performance Studio extension support?</summary>
The extension is compatible with Godot 4.3 and later.
</details>

<details>
<summary>How do I confirm the extension installed correctly in my project?</summary>
Add a script that creates `PerformanceStudio.new()` and call `marker("Test")`. If the project runs without script errors, the extension is available and your annotations can be captured.
</details>

<details>
<summary>How do I add a point-in-time annotation?</summary>
Create a PerformanceStudio instance and call `marker("Game Started")` to emit a timestamped label. This label appears in the Streamline timeline for correlation with performance data.
</details>

<details>
<summary>How do I define a region, and where will it appear in reports?</summary>
Emit a pair of markers prefixed with `Region Start <name>` and `Region End <name>` around the code of interest. Performance Advisor shows these regions on the frame rate analysis chart and in dedicated per‑region charts.
</details>

<details>
<summary>When should I use channels instead of single markers?</summary>
Use channels to annotate durations on specific threads, such as asset loading or enemy spawning. Channels provide labeled spans that make it easier to trace long‑running operations alongside other events.
</details>
