BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース .NET Core 2.1によるMicrosoft Bingの高速化

.NET Core 2.1によるMicrosoft Bingの高速化

原文(投稿日:2018/08/22)へのリンク

Microsoftの検索エンジンBingは.NET Core 2.1に移行後、内部サーバのレイテンシが34%低下した。MicrosoftのエンジニアであるMukul Sabharwal氏によれば、そのほとんどは.NETコミュニティによる貢献のおかげだ。

氏によれば、.NET Coreに対する多くの改善が、この高速化に影響を与えた。文字列一致のベクタ化、新しいSpan<T>型を使ったstring.IndexOf/LastIndexOfによるHTML描画と操作の高速化、EqualityComparerのための脱仮想化EqualityComparer.Defaultによるディクショナリの高速化並列GCのための書き込みウォッチによるCPU利用の低減などだ。


(画像はMicrosoftブログから)

ほとんどの改善は.NETコミュニティによって行われた。ただし、GitHubのプルリクエストの多くはMicrosoftの社員によって作られている。Bingを.NET Core 2.1に移行できたのには2つの要因があった。ひとつはReadyToRunイメージのサポートだ。これによって、デプロイの前にJITコンパイルができる。これがなければ、それぞれの実行マシン上でJITコンパイルをする必要がある。そうなると、Bingを構成するサーバの台数が多いため、重大なサービスキャパシティの低下が起きてしまう。NET Coreのcrossgenツールを使うことで、プリコンパイルしてイメージをデプロイできるようになった。ふたつめの要因は.NET Standard 2.0だ。これは32000を超えるのAPIのコレクションであり、これを使うことで開発者は複数のプラットフォームで.NET Core 2.1への移行が簡単に実現できる。

そして、最後に氏が強調したのは継続的統合のパイプラインからBingアプリケーションの中の.NET Coreランタイムをxcopyを使ってデプロイすることの重要性だ。これによって.Net Core 2.1が公式にリリースされてからわずか2日後にBingを2.1に移行できた。

InfoQが以前報じた通り、.NET Core 2.1の最大のセールスポイントのひとつは速度改善だ。また、自己内蔵デプロイメントというかたちで新しい配置の選択肢を提供する。パフォーマンス面では、.NET Core 2.1は新しいSystem.Span<T>をサポートしている。これは、F# 4.5で追加されたものだ。さらに、JITコンパイラには、多くの最適化が行われている。もし、この速度改善について深く知りたいならMicrosoftのエンジニアのStephen Toub氏の記事を読むといいだろう

 
 

Rate this Article

Adoption Stage
Style
 
 

この記事に星をつける

おすすめ度
スタイル

BT