29

微软必应从.NET Core 2.1获得了性能提升

 5 years ago
source link: http://www.infoq.com/cn/news/2018/08/bing-speedup-dotnet-core-2.1?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

据微软工程师Mukul Sabharwal介绍,在将微软搜索引擎必应迁移到.NET Core 2.1之后, 内部服务延迟降低了34% ,这主要归功于.NET社区贡献的改进。

按照Sabharwal的说法,.NET Core的多项改进贡献了大部分的性能提升,包括 字符串相等矢量化 、使用新的 Span<T> 类型的 string.IndexOf/LastIndexOf ,它们加速了HTML渲染和操作; EqualityComparer.Default去虚拟化 ,这 提升了字典性能并发GC写监视 ,这降低了CPU使用;还有其他的特性。

2em-1535011014848.jpg

(图片来自微软博客)

如上所述,大部分改进都是由.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带来了对新类型 System.Span<T> 的支持,该特性稍后也添加到了F# 4.5中。此外,JIT编译器有许多优化,包括上面列出的这些。想要深入了解更多有关.NET Core 2.1性能改进的信息,请查阅 微软工程师Stephen Toub的博客

查看英文原文: Microsoft Bing Gets Performance Boost from .NET Core 2.1


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK