JIT和程式的首次執行

2022-01-20 16:38:20 字數 445 閱讀 6182

由於c#源**經過編譯器編譯生成的是il**,而il是與cpu無關的機器語言。因此當程式執行於特定的cpu時,首先必須將il轉換成本地cpu指令,這正是jit(just-in-time)編譯器的任務、職責。

當程式中某個具體的方法首次被呼叫的時候,jit主要會執行以下步驟:

由於第一次呼叫會經過編譯和優化等步驟,所以會有一定的效能損失。但是以後對該方法的呼叫會以本地**的形式全速執行。

如果您認為這些效能損失不容忽視,可以使用ngen.exe工具來將應用程式的il**編譯成本地**。然後,每當clr引導程式集時,都會檢查是否存在乙個對應的、由於ngen生成的本地檔案。如果找不到,clr就會像往常一樣對il進行jit編譯。然而,如果存在乙個對應的本地檔案,clr直接使用本地檔案中編譯好的**。但是對於伺服器應用程式而言,ngen.exe的作用並不明顯,有時甚至毫無用處,加上ngen.exe有一些其他的缺點,因此應當謹慎使用!

程式結構和程式執行

有兩個方法來實現條件分支,乙個是條件控制來實現條件分支,另乙個是條件傳送來實現條件分支。int max int a,int b 條件控制 像 x y的結果對處理器來說非常不可 即使最精密的分支 硬體也只有50 的概率 正確。int max int a,int b 條件傳送 一般來說,同樣功能的 條件...

程式的執行

到目前為止使用的所有變數在本教程中有乙個共同點 在編譯時必須宣告的變數。這將導致兩個問題 第一,很難有條件地宣告乙個變數,把它以外的在if語句塊 在這種情況下它將走出範圍塊結束時 其次,所有陣列的大小必須提前決定程式的執行。例如,以下是不合法的 然而,在許多情況下,這將是有用的能夠大小或調整陣列在程...

iOS 概述和程式的執行順序

二程式的執行順序 顯示面積。盡可能少而緊湊的介面元素 足夠大的互動控制項。記憶體空間。程式執行空間小,記憶體管理優化,避免過高質量的和音訊。程式執行限制。一次只有乙個前台程式,程式退出時間不得超過5秒。能量消耗。cpu負載 發熱 電池消耗快 演算法優化。使用者使用習慣。快速啟動 短暫使用,隨時可能退...