Who is this for?

This is an introductory topic for software developers and performance engineers who want to identify code hotspots in applications running on Arm Linux systems.

What will you learn?

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

  • Run the Code Hotspots recipe in Arm Performix
  • Identify which functions consume the most CPU cycles and target them for optimization

Prerequisites

Before starting, you will need the following:

  • Access to Arm Performix
  • Basic understanding of C++

Summary

AI-assisted

This summary was drafted with an approved AI-assisted workflow and reviewed by Arm contributors before publication. Human technical review remains part of the process so the final page reflects engineering rigor, accuracy, and Arm editorial standards.

Close
?
You’ll profile a C++ Mandelbrot renderer on Arm Neoverse with Arm Performix and use flame graphs to find hot code. You’ll build the 1920×1080 bitmap example, capture a Code Hotspots baseline, connect hot functions to source and call paths, edit the hottest loops, and profile it again. By the end, you’ll use flame graph evidence to target optimization work.

Frequently asked questions

AI-assisted

These FAQs were drafted with an approved AI-assisted workflow and reviewed by Arm contributors before publication. Human technical review remains part of the process so the final page reflects engineering rigor, accuracy, and Arm editorial standards.

Close
?
What result should I expect after running the Code Hotspots recipe?
Expect a flame graph that highlights the hottest functions in the run. The Mandelbrot example typically surfaces Mandelbrot::getIterations and its __hypot call path in the stack if they dominate CPU time.
Where is the output bitmap written when running under Arm Performix?
The code writes to the relative path ./images/green.bmp. Confirm the working directory used by Arm Performix so the image appears where you expect, or adjust the path in the code.
Which source file shows the baseline program flow I should compare against?
Open src/main_single_thread.cpp. It drives the Mandelbrot computation that generates the 1920×1080 bitmap used for profiling.
How do I read the flame graph to decide what to change first?
Wider frames represent more sampled CPU time. Start with the widest frames near the top of the stack and trace down the call path to find the exact functions to modify.
How do I validate that my changes improved the hot path?
Rebuild the program and run the Code Hotspots recipe again. Compare the new flame graph to the baseline; a reduction in the previous hotspot’s width indicates the change had an effect.
Next