# Code optimization

> Project configuration, design patterns, and coding strategies to help optimize the performance of your code.

Considering performance in all the code you write helps your project scale without bottlenecks. There are several ways you can improve performance, including avoiding bad practices, [profiling](/engine/6000.7/manual/analysis/profiler.md) your code, implementing appropriate design patterns, and using techniques like asynchronous programming to split work across multiple threads of execution.

| **Topic**                                                                                                                             | **Description**                                                                                                                                                                                       |
| ------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [Unity programming best practices](/engine/6000.7/manual/scripting/optimization/programming-best-practices.md)                        | Key issues to be aware of when writing code for Unity applications, along with best practices to help you avoid common pitfalls.                                                                      |
| [Asynchronous programming](/engine/6000.7/manual/scripting/optimization/async-await-support.md)                                       | Asynchronous programming in Unity with the .NET `async` and `await` keywords and Unity's own custom `Awaitable` class.                                                                                |
| [Job system](/engine/6000.7/manual/scripting/optimization/job-system.md)                                                              | Use Unity's own `Job` system to get the most out of multi-core CPUs and parallelize your algorithms.                                                                                                  |
| [Optimizing your code for managed memory](/engine/6000.7/manual/scripting/optimization/performance-optimizing-code-managed-memory.md) | Approaches for optimizing your code to work with managed memory.                                                                                                                                      |
| [Using unmanaged API for transform operations](/engine/6000.7/manual/scripting/optimization/transformhandle.md)                       | Use the [`TransformHandle`](/engine/6000.7/script-reference/unityengine/transformhandle.md) API as an alternative to the [`Transform`](/engine/6000.7/script-reference/unityengine/transform.md) API. |

## Additional resources

* [Optimization in Unity](/engine/6000.7/manual/analysis.md)
