|
上一篇文章中Aicken為大家介紹了.NET平臺的垃圾回收機制與其對性能的影響,這一篇中將繼續(xù)為大家介紹.NET平臺的另一批黑馬—JIT。有關(guān)JIT的機制分析
● 機制分析以C#為例,在C#代碼運行前,一般會經(jīng)過兩次編譯,第一階段是C#代碼向MSIL的編譯,第二階段是IL向本地代碼的編譯。第一階段的編譯成果是生成托管模塊,第二階段的編譯成果是生成本地代碼以供運行,從這里各位同學可以看出,第一階段生成的MSIL是不能直接運行的。必須指出的是JIT在第一次編譯IL后,會修改對應(yīng)方法相應(yīng)的內(nèi)存地址入口,下一次需要執(zhí)行這個方法時,CLR會直接訪問對應(yīng)的內(nèi)存地址,而不會經(jīng)過JIT了。
以Load()方法為例,假如Load()方法中調(diào)用了兩次同類型中的方法:
Void Load(){A.a1("First");A.a1("Second");}
static class A{Public void a1(string str){}
Public void a2(string str){}
Public void a3(string str){}}
NET技術(shù):.Net Discovery系列之-深入理解平臺機制與性能影響 (中),轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。