# 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<br>[GitHub](https://github.com/odincodeshen)<br>[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](https://learn.arm.com/tag/migration-to-arm) [Windows](https://learn.arm.com/tag/windows) [Visual Studio](https://learn.arm.com/tag/visual-studio) [csharp](https://learn.arm.com/tag/csharp) [dotnet](https://learn.arm.com/tag/dotnet) [Arm Performance Libraries](https://learn.arm.com/tag/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?
After completing this Learning Path, you'll be able to perform the following tasks:
- 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'll need the following prerequisites:
- 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.
