.NET Core引入性能分析引导优化
“性能分析引導優化(Profile Guided Optimization,縮寫PGO)”是一項原生編譯技術,可用于生成高度優化的代碼。它通過一個兩步編譯過程實現優化——用第一步記錄相關執行信息,然后第二步用那些信息構建一個改進過的二進制文件。據來自微軟的Daniel Podder和Bertrand Le Roy介紹,從歷史上看,該過程的好處是改進了二進制代碼在鏡像中的位置,產生了更好的行為和引用集局部性。
在.NET Core中實現PGO的一個重要原因是,用戶不需要采取任何特殊的措施就可以從PGO受益,因為它是應用到.NET Core運行時和JIT編譯器的。因此,它會針對特定的應用程序根據其使用情況進行恰當的改進,而托管應用程序會自動受益。
Podder和Le Roy表示,對于這個版本,PGO優化已經應用到.NET Core運行時的原生部分,但將來,他們會把這些優化應用到.NET Core技術棧的托管組件。和針對.NET Core 1.1的PGO優化只適用于Windows x86不同,這些最新的優化已經擴展到了Windows x64和Linux x64上。
由于一個.NET Core應用程序超過75%的啟動時間都消耗在coreclr.dll和clrjit.dll上(在Linux上是libcoreclr.so和libclrjit.so),所以那是團隊設法度量并改進性能的地方。根據微軟的基準測試,在Windows平臺(x64 & x86)上的改進非常顯著,性能提升在14%到23%之間。另一方面,在Linux x64上的性能提升在2%到5%之間。這一點很重要,這讓我們知道啟用PGO并沒有導致在Linux上的性能退化,同時,這也表明將來仍然有很大的改進空間。
按照微軟新聞發言人的說法,Windows和Linux被視為關鍵的部署目標,因此,它們會首先引入PGO技術。對于其他的平臺,如macOS,他們將來會根據用戶反饋進行考慮。
原文地址:http://www.infoq.com/cn/news/2017/08/pgo-NETCore
.NET社區新聞,深度好文,微信中搜索dotNET跨平臺或掃描二維碼關注
總結
以上是生活随笔為你收集整理的.NET Core引入性能分析引导优化的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: DDD理论学习系列(12)-- 仓储
- 下一篇: 腾讯游戏使用Microsoft Serv