- C# 7 and .NET Core 2.0 High Performance
- Ovais Mehboob Ahmed Khan
- 225字
- 2021-08-27 18:47:06
Profile guided optimization
Profile-guided optimization (PGO) is a compilation technology used by C++ compiler to generate optimized code. It applies to the internal native compiled components of the runtime and JIT. It performs compilation in two steps, which are as follows:
- It records the information about code execution.
- From this information, it generates better code.
The following diagram depicts the life cycle of how the code is compiled:

In .NET Core 1.1, Microsoft already released the PGO for Windows X64 architecture, but in .NET Core 2.0, this has been added for both Windows X64 and X86 architectures. Also, as per observatory results, it was noted that the actual startup time is mostly taken by coreclr.dll and clrjit.dll for Windows. Alternatively, on Linux, there are libcoreclr.so and libclrjit.so, respectively.
Comparing RyuJIT with the old JIT compiler known as JIT32, RyuJIT is more efficient in code generation. The startup time of the JIT32 was faster than the RyuJIT; however, the code is not efficient. To overcome the initial startup time taken by the RyuJIT compiler, Microsoft used PGO, which brought the performance closer to JIT32 performance and achieved both efficient code and performance on startup.
For Linux, the compiler toolchain is different for each distro, and Microsoft is working on a separate Linux version of .NET that uses the PGO optimizations applicable to all distros.
- 數據要素安全流通
- 計算機綜合設計實驗指導
- 數據挖掘原理與實踐
- SQL Server 2016 數據庫教程(第4版)
- Spark快速大數據分析(第2版)
- InfluxDB原理與實戰
- 虛擬化與云計算
- Python數據分析、挖掘與可視化從入門到精通
- 數據挖掘原理與SPSS Clementine應用寶典
- IPython Interactive Computing and Visualization Cookbook(Second Edition)
- SAS金融數據挖掘與建模:系統方法與案例解析
- Spring MVC Beginner’s Guide
- 改進的群智能算法及其應用
- 企業大數據處理:Spark、Druid、Flume與Kafka應用實踐
- Swift Functional Programming(Second Edition)