.NET Core 2の高速化
Microsoftは「PGO (Profile-Guided Optimization )」について伝えた。
この技術は、C++コンパイラで最適化されたコードを生成するために
使われているネイティブコンパイラ技術であり、.NET Core 2.0でも
採用されている。
ちなみに、PGOは、使用頻度の高い関数のバイナリサイズの
増加を許し、使用頻度の低い関数は小さくするというものだ。
また、使用頻度が多いコードから離れたメモリの位置に
使用頻度の少ないコードを配置することで、CPUのキャッシュを
有効的に使い、全体のパフォーマンスを向上させている。
Microsoftは、「すべてのユーザは特定の処理をすることなく、
恩恵を受けている」とPGOについて説明している。
ただし、適用されているのは現状Windowsに対してのみであり、
Linuxではまだ効果的に機能していない部分があるとのことで、
改善の余地は残されている。
また、JIT技術についてはRyuJITに統一し、高速化を実現したとのこと。
RyuJITは起動に時間がかかるという問題点を抱えているが、
この点をPGO技術との併用で改善したとしている。