BT

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

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース .NET Core 2.1でパフォーマンスとデプロイオプションが改善された

.NET Core 2.1でパフォーマンスとデプロイオプションが改善された

原文(投稿日:2018/05/31)へのリンク

読者の皆様へ:ノイズを減らすための一連の機能を開発しました。関心のあるトピックについて電子メールとWeb通知を受け取ることができます新機能の詳細をご覧ください。

Microsoftは正式にすべてのプラットフォーム向けに.NET Core 2.1をリリースした。このリリースは長期的なサポートを受けることを目的としているが、MicrosoftのRich Lander氏によれば、正式にはLTSに指定されていない。Lander氏によると、今回のリリースには多くはないが重要なアップデートが追加され、その対応を以って本バージョンが完成したとみなされている。公式になると、このリリースは3年間サポートされる。Lander氏は、アクティブに開発しているすべての.NETコアアプリケーションに対して、プログラマーは今すぐ2.1に移行するべきだと述べている。

2.1への切り替えが何をもたらすか?すぐにLTS指定に到達する以外に、2.1はUbuntu 18.04、Alpine Linux、ARM32をサポートする。また、自己完結的なアプリケーションの公開ができ、また、パフォーマンスが改善した。

パフォーマンスの向上を見てみると、増分ビルド時間に関して、.NET Core 2.0より2.1倍の速度向上を示していることが注目すべき点である。2.1には新しいクラスSocketsHttpHandlerが加わっている。これは、HttpClientのC#実装である。SocketsHttpHandlerは以前の実装よりもはるかに高速であり、一貫したクロスプラットフォームの動作を提供する。

MicrosoftのStephen Toub氏は、2.1のランタイムパフォーマンスの改善について非常に詳細に説明している。これらの改善の一部は、System.Spanとそれに関連する型を追加したことによる。他には、.NET Core 2.1で使用されているJust-In-Time(JIT)コンパイラに変更が加えられた。興味深いのは、階層化されたコンパイルを利用できることである。このシナリオでは、JITコンパイラは最小限の最適化でできるだけ速く実行可能ファイルを生成する。これが完了すると、JITコンパイラはプログラムの動作を観察し、頻繁に使用されるメソッドは2番目に最適化されるコンパイルパスを受け取る。その理論としては、なぜ、ほとんど使用されないメソッドを最適化するために時間をとるかということである。この動作はデフォルトでは有効になっていないが、次の環境変数で有効にすることができる。

COMPlus_TieredCompilation="1"

パフォーマンスの向上はコードの最適化に限定されない。.NET Coreチームは、データ転送のサイズを縮小するために新しい圧縮規格も組み込んでいる。Microsoftは、Googleが提供するCコードに基づく実装を使用して、Brotli圧縮を.NET Core 2.1でサポートした。Brotliは多くのWebブラウザとWebサーバで幅広くサポートされているため、この技術が.NET Coreで利用できサポートされていると便利である。

最後に、.NET Core 2.1は自己完結型デプロイメント(SCD)を提供している。これは、実行に必要なすべての.NET Coreランタイムファイルを含むアプリケーションのReleaseビルドを生成する機能である。これは通常のビルドよりも多くのディスクスペースを使用する一方で、開発者は、どのプラットフォームでアプリケーションを実行し、どの.NET Coreのバージョンを使うかを指定できるようになる。

サポートされているすべてのプラットフォーム(Windows、macOS、Linux)用の.NET Core 2.1の完全リリースノートダウンロードで現在入手可能である。

 

 
 

Rate this Article

Adoption Stage
Style
 
 

この記事に星をつける

おすすめ度
スタイル

BT