2011-05-24 46 views

回答

173

它告訴NGEN,即使在不同的程序集中,也可以將它應用到的方法內聯。

例如:

  • String.Equals[TargetedPatchingOptOut]
  • 你編寫調用String.Equals
  • 您運行NGen對這個方案的最高性能
  • NGEN將內聯String.Equals調用程序,更換方法調用指令與方法中的實際代碼。
    方法調用(稍微)很貴,所以這是一個經常調用方法的性能提升。

但是,如果微軟發現在String.Equals一個安全漏洞,他們不能只更新mscorlib.dll,因爲這不會影響組件,您只需NGen'd。 (因爲它有原始的機器碼,沒有引用String.Equals)。
我假設如果真的發生這種情況,安全更新將清除NGen商店。

請注意,此屬性僅在.NET Framework程序集中有用。你自己並不需要它。你可以在這裏找到更多的信息:https://stackoverflow.com/a/14982340/631802

+5

優秀的答案,謝謝。 – crypted 2011-05-24 12:15:11

+18

我們可以在我們自己的框架中使用這個屬性嗎?我的開源庫有很多數學函數,可以從中受益... – MattDavey 2011-09-12 08:58:12

+3

如果.NET框架已修補,現有的本機圖像文件將失效並重新創建(至少這是我的理解) – Motti 2012-03-15 13:09:05