What are the advantages of nbfc

[Introduction] NoteBook FanControl (NBFC)

Not all assemblies are precompiled when you run .NET applications, but only when the framework itself is installed.
The individual assemblies (which are used by .NET programs) are compiled to match your system after installation, so that the JIT compiler (JIT = just in time) does not always have to run.

The NBFC setup also compiles all NBFC assemblies via ngen.exeand stores them in the native image cache.

To put it simply, a call to a .NET program looks like this:
  1. User executes file
  2. the OS loader recognizes that it is a .NET application and starts the CLR
  3. the CLR looks in the native image cache for each assembly to see whether a precompiled image is available
  4. if yes, the image is loaded into memory; if no, the JIT compiler is started, which then compiles the code to be executed
  5. Code that is now in binary form in memory is executed

Btw. In fact, if there are no native images in the cache, .NET applications are always compiled during execution (just in time). (However, not the complete code in one fell swoop, but only what is needed at the moment).

Advantages:
- Platform-independent assemblies (only a CLR implementation has to be available for the respective platform, comparable to Java or the Java Runtime)
- Optimizations during runtime by the CLR or the JIT compiler are possible

Disadvantage:
- overhead by the JIT compiler and the CLR