# Optimize Windows applications using Arm Performance Libraries

## In this learning path

- [Introduction](https://learn.arm.com/learning-paths/laptops-and-desktops/windows_armpl/)
- [Before you begin](https://learn.arm.com/learning-paths/laptops-and-desktops/windows_armpl/1a-get-started/)
- [Create and Run a Windows on Arm application](https://learn.arm.com/learning-paths/laptops-and-desktops/windows_armpl/1-first-vs-project/)
- [Git setup](https://learn.arm.com/learning-paths/laptops-and-desktops/windows_armpl/2a-get-set-up-git/)
- [Build and Profile an Application with Spin the Cube and Visual Studio](https://learn.arm.com/learning-paths/laptops-and-desktops/windows_armpl/2-multithreading/)
- [Use Arm Performance Libraries to Optimize Performance](https://learn.arm.com/learning-paths/laptops-and-desktops/windows_armpl/3-apt-enhancement/)
- [Next Steps](https://learn.arm.com/learning-paths/laptops-and-desktops/windows_armpl/_next-steps/)

## About this Learning Path

| Skill level: | Introductory |
|--------------|--------------|
| Reading time: | 1 hr |
| Last updated: | 11 Aug 2026 |

| Author: | Odin Shen, Arm [GitHub](https://github.com/odincodeshen) [LinkedIn](https://linkedin.com/in/odin-shen-lmshen) |
|----------|-----------------------------------------------------------|
| Arm IP: | [Cortex-A](https://support.arm.com/?tab=compute-ip&Product%20Type=Application%20Processors) |
| Tags: | Migration to Arm, Windows, Visual Studio, csharp, dotnet, Arm Performance Libraries |

## Who is this for?
This is an introductory topic for software developers who want to improve the performance of Windows on Arm applications using Arm Performance Libraries.

## What will you learn?
Upon completion of this Learning Path, you will be able to:
- Develop a Windows on Arm application using Microsoft Visual Studio.
- Utilize Arm Performance Libraries to optimize the performance of an application.

## Prerequisites
Before starting, you will need the following:
- A Windows on Arm computer such as the Lenovo Thinkpad X13s running Windows 11.

## Summary
You’ll set up Visual Studio 2022 on Windows on Arm, create a starter console app, and profile the `SpinTheCubeInGDI` example. First, you’ll capture a baseline while it runs a rotating 3D shape, then install Arm Performance Libraries and profile again. You’ll compare the results to assess how library integration and programming options affect execution.

## Frequently asked questions

### Which Visual Studio 2022 edition should I use for this path?
Use any edition of Visual Studio 2022 that meets your needs. The Community edition is free and suitable for students, open source contributors, and individual developers.

### Where should I clone the example, and how do I confirm it cloned correctly?
Clone the repository into an empty directory you can write to. After cloning, you should see `SpinTheCubeInGDI.sln` and the source file `SpinTheCubeInGDI.cpp` in the repository folder.

### How do I open and run the Spin the Cube example, and what result should I expect?
Open `SpinTheCubeInGDI.sln` in Visual Studio, then build and run it. A window that draws a spinning 3D cube indicates the application is running correctly.

### What should I check when profiling the application in Visual Studio?
Capture a baseline profile while the spinning cube runs, then repeat after changing the example’s programming options such as multithreading. Compare the results between runs to understand the differences.

### How do I install and apply Arm Performance Libraries in this workflow?
Install Arm Performance Libraries for Windows on Arm by following the [install guide](https://learn.arm.com/install-guides/armpl/). Integrate the libraries as directed by the guide, rebuild the project, and profile again to compare with your baseline.
