マイクロソフト、「.NET 8」正式リリース、2年ぶりのLTS版。Dynamic PGOによる最適化コンパイル、事前コンパイルのバイナリサイズが半分など、さらなる高速化が前進

2023年11月15日

マイクロソフトは同社の包括的なアプリケーションフレームワーク「.NET 8」の正式リリースを発表しました

fig

.NETは、マイクロソフトがWindows用のアプリケーションフレームワークとして開発してきた「.NET Framework」と、オープンソースとして開発を開始した「.NET Core」フレームワーク、モバイル向けの「Xamarin」を統合し、デスクトップアプリケーションからモバイルアプリケーション、クラウドネイティブ、ゲーム、IoTなど、あらゆるアプリケーションを包括的にカバーするフレームワークです。

fig

.NETは1年ごとにメジャーバージョンアップが行われ、2年ごとに登場する偶数バージョンがLTS(Long Term Support:長期サポート)版となります。

今回リリースされた.NET 8は偶数バージョンであるためLTS版となり、長期的にサポートが提供される安定したバージョンとなります。

より高速化のためDynamic PGO、バイナリサイズが半分に

日本時間11月15日に行われたオンラインイベント「.NET Conf 2023」では、最初の.NET 8の特長として性能向上が示されました。

.NET 7と比較してJSON APIのシナリオで約18%、より現実的なアプリケーションに近いFortunesベンチマークで24%高速になっています。

fig

.NET 8の主な新機能は以下です。

Dynamic PGOがデフォルトで有効に
.NETには以前からコンパイルをするプロセスがありますが、このコンパイルはソースコードを.NET専用の中間言語に変換するものです。.NETランタイムによって実行時にこの中間言語からネイティブバイナリが生成され、ターゲットマシン上でアプリケーションが実行されます。

このネイティブバイナリの生成のため、.NETは動的にバイナリを生成するJITコンパイラを搭載しています。

これまでのJITコンパイラは、起動時に短時間でバイナリを生成することを優先したコンパイラと、実行中何度も呼ばれるメソッドを高速に実行するための最適化されたバイナリを生成するためのコンパイラが搭載され、アプリケーションの起動時と実行中に使い分けられていました。

この2つのコンパイラとその使い分けは、「階層化コンパイル」と呼ばれています。

.NET 8で標準で有効化されるDynamic PGOは、この階層化コンパイルの実行中のコンパイル機能をさらに改善したものです。PGOとは「Profile Guided Optimization」の略で、実行中のアプリケーションのプロファイルを基にしてコンパイルを最適に行い、より高速な実行を実現します。これを実行中に動的に行うのがDynamic PGOです。

.NET 8では階層化コンパイルにこのDynamic PGOを組み込み、デフォルトで有効にすることで、より高速なアプリケーションの実行が期待されます。

AOTコンパイラが生成するバイナリの大きさが約半分に縮小

前バージョンである.NET 7からは、実行時にバイナリを生成するJITコンパイラだけでなく、ソースコードを事前にコンパイルし、ネイティブバイナリを生成するAOTコンパイラ(Ahead of Timeコンパイラ)、もしくはネイティブコンパイラと呼ばれるコンパイラも提供開始されました。

AOTコンパイラを利用することで、あらかじめコンパイル済みのバイナリを実行できるため、少ないメモリ容量と低いプロセッサ能力であっても瞬時に起動し高速に実行可能となります。これはサーバレス環境やIoTデバイスなどでのアプリケーション開発に向いています。

.NET 7で登場したAOTコンパイラは、こうしたニーズに主に対応するもので、Windows、macOS、LinuxのOSでユーザーインターフェイスを持たないコンソールアプリの生成にのみ対応しました。

.NET 8ではこのAOTコンパイラが改善され、生成されるバイナリサイズが約半分程度にまで最適化が進んでいます。また、ASP.NETアプリケーションでも(制限がありつつも)AOTコンパイラが利用可能になっています。

参考:次期「.NET 8」プレビューリリース初公開。ネイティブコンパイラ改善で生成バイナリが約半分に、「Blazor United」登場など

また、ASP.NET Core in .NET 8がAOTコンパイラに対応しました。

参考:マイクロソフト、「ASP.NET Core in .NET 8」正式版リリース。事前コンパイルにより、高速に起動する軽量なWebアプリケーションを実現

Arm64プロセッサでの性能向上
.NET 8ではArmのエンジニアとの協力により、Arm64プラットフォームにおける大幅な性能向上が実現しています。

また、.NET 8リリースと同時に.NET 8をベースにしたWebアプリケーションフレームワーク「ASP.NET Core 8」、クロスプラットフォーム対応のUIフレームワーク「.NET MAUI in .NET 8」もリリースされました。

あわせて読みたい

.NET プログラミング言語 Microsoft




タグクラウド

クラウド
AWS / Azure / Google Cloud
クラウドネイティブ / サーバレス
クラウドのシェア / クラウドの障害

コンテナ型仮想化

プログラミング言語
JavaScript / Java / .NET
WebAssembly / Web標準
開発ツール / テスト・品質

アジャイル開発 / スクラム / DevOps

データベース / 機械学習・AI
RDB / NoSQL

ネットワーク / セキュリティ
HTTP / QUIC

OS / Windows / Linux / 仮想化
サーバ / ストレージ / ハードウェア

ITエンジニアの給与・年収 / 働き方

殿堂入り / おもしろ / 編集後記

全てのタグを見る

Blogger in Chief

photo of jniino

Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。2009年にPublickeyを開始しました。
詳しいプロフィール

Publickeyの新着情報をチェックしませんか?
Twitterで : @Publickey
Facebookで : Publickeyのページ
RSSリーダーで : Feed

最新記事10本