※ 引述《Contactman.bbs@bbs.badcow.com.tw (上B只為剿小白出氣!)》之銘言:
: ※ 引述《tinlans.bbs@whshs.cs.nccu.edu.tw (汀)》之銘言:
: : 我倒是覺得 NGen 對 .NET 來說是一把雙面刃,
: : 不要忘記 .NET 程式經過 NGen 處理過以後,
: : 傳統 compiler 沒辦法在 runtime 做到的即時最佳化,
: : 也會變得無法進行了,
: : 因為它算是一種 Pre-JIT 的做法,
: : 而且就我的印象中,
: : 使用 NGen 依然不能刪除原本帶有 IL 的程式,
: : 這代表在執行時還是會有參考它的可能性,
: : 不過這一點我並不是很確定。
: 你是對的, 而且在程式剛起來的時候, 還會先檢驗NGen出來的執行檔和
: 對應的IL assembly的版本是否一致, 若不一致, NGen出來的東西會被忽略,
: JIT會立即重新Complier一份新的native code.
這個缺點在 .net 2.0 有改進。現在 dependencies 的 structral information
已經不會包含在 NGENed 的 native image 裡面,而是存放在 registry,
所以不會因為 reference 到的 assembly 版本有所變更就需要改用 JIT。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 203.70.36.38