微軟必應從.NET Core 2.1獲得了性能提升
據微軟工程師Mukul Sabharwal介紹,在將微軟搜索引擎必應遷移到.NET Core 2.1之後,內部服務延遲降低了34%,這主要歸功於.NET社區貢獻的改進。
按照Sabharwal的說法,.NET Core的多項改進貢獻了大部分的性能提升,包括字元串相等矢量化、使用新的類型的string.IndexOf/LastIndexOf,它們加速了HTML渲染和操作;EqualityComparer.Default去虛擬化,這提升了字典性能;並發GC寫監視,這降低了CPU使用;還有其他的特性。
(圖片來自微軟博客)
如上所述,大部分改進都是由.NET社區貢獻的,Sabharwal指出,雖然許多GitHub pull request來自微軟員工。據Sabharwal介紹,有兩個關鍵因素使得必應可以遷移到.NET Core 2.1。一個是支持ReadyToRun鏡像,這使得JIT編譯變成了一個預部署步驟。沒有ReadyToRun鏡像,所有代碼在它要在上面運行的每一台機器上都應該JIT編譯,由於支撐必應的機器數量眾多,所以這會顯著降低服務能力。使用.NET Core的crossgen工具,就可以在微軟實驗室中對應用程序進行預編譯,然後部署鏡像。第二個關鍵因素是.NET Standard 2.0,一個超過32K API的集合,這可以幫助開發人員確保他們的代碼可以在多個平台上輕鬆地移植到.NET Core 2.1。
最後,Sabharwal強調了使用xcopy從他們的持續集成管道部署必應應用程序中的.NET Core運行時的重要性。這才使得必應在.NET Core 2.1正式發布僅兩天之後就過渡到了.NET Core 2.1。
正如InfoQ在.NET Core 2.1發布時所報道的那樣,.NET Core 2.1其中一個最大的賣點就是性能提升,以及採用自包含部署形式的新部署選項。在性能方面,最引人注意的是,.NET Core 2.1帶來了對新類型的支持,該特性稍後也添加到了F# 4.5中。此外,JIT編譯器有許多優化,包括上面列出的這些。想要深入了解更多有關.NET Core 2.1性能改進的信息,請查閱微軟工程師Stephen Toub的博客。
原文地址: http://www.infoq.com/cn/news/2018/08/bing-speedup-dotnet-core-2.1
※ASP.NET Core URL Rewrite中間件
※NET Core微服務之服務間的調用方式
TAG:dotNET跨平台 |