昨夜は.NETのAOTコンパイルとReady2Runコンパイルの意味がよくわかってなかったがやっと理解した。
AOTコンパイルは出力にネイティブコードのみ含んでおりそれだけで実行するため動的な読み込みとかは制限される。
一方でReady2Runコンパイルは普通に中間コードを含むバイナリだが、AOTコンパイルされたネイティブコードもおまけで持っていてJITコンパイルされるまでもなくそれを使えるので速く、AOTコンパイルされたコードはおまけなので制限なく動的な読み込みとかもできるというもののようだ。
ドキュメントだとReady2RunコンパイルはAOTコンパイルの一種ですとしか書かれてないし、それぞれページも別なので違いがわかりづらい。
あとReady2RunはAOTコンパイルされたコードを持ちながらJITコンパイルもされるので、実行中により最適化できるとのこと。