Understanding Ahead-of-time (AOT) Compilation in C#

Dev·edium
11 min readJul 23, 2023

A Deep Dive into Ahead-of-Time (AOT) Compilation for Optimized Performance

Photo by CHUTTERSNAP on Unsplash

What is it?

Traditionally, .NET languages like C# use Just-in-Time (JIT) compilation. In this process, the source code is initially compiled into Common Intermediate Language (CIL) code, a platform-agnostic code representation. Only when the code is executed does the JIT compiler translate the CIL code into machine code that the CPU processor can understand.

1. Source Code (C#)
|
| (Compilation to CIL)
V
2. Common Intermediate Language (CIL) Code (published/deployed)
|
| (JIT Compilation at Runtime)
V
3. Machine Code (Platform-Specific)
|
| (Execution)
V

Ahead-of-Time (AOT) Compilation, on the other hand, introduces a paradigm shift in this process. Instead of waiting for execution time, AOT compilation converts the CIL code into machine code ahead of time, hence the name. This conversion can occur at build time, installation time, or any other time before execution. As a result, when the application is launched, the machine code is ready to be processed without the need for further compilation.

1. Source Code (C#)
|
| (Compilation to CIL)
V
2. Common Intermediate Language (CIL) Code
|
| (AOT…

--

--