剛剛用C#寫(xiě)了一個(gè)排序算法,在運(yùn)行中對(duì)該算法執(zhí)行了二次,第一次需要1000多微秒,但第二次僅需要10微秒。請(qǐng)問(wèn)各位大蝦這是為什么?
2 回答

慕斯709654
TA貢獻(xiàn)1840條經(jīng)驗(yàn) 獲得超5個(gè)贊
因?yàn)?.NET 程序從源代碼到機(jī)器代碼會(huì)經(jīng)歷兩個(gè)過(guò)程:先從源代碼 到IL 中間代碼:再在程序執(zhí)行的時(shí)候,JIT 會(huì)將中間代碼 編譯成機(jī)器代碼。在代碼第一次執(zhí)行的時(shí)候有上述過(guò)程。然后編譯后的機(jī)器代碼會(huì)被緩存起來(lái)。所以第一次執(zhí)行的速度會(huì)長(zhǎng)一些,而第二次速度就快很多, 因?yàn)椴恍枰購(gòu)?IL 到機(jī)器碼的編譯過(guò)程。

繁華開(kāi)滿天機(jī)
TA貢獻(xiàn)1816條經(jīng)驗(yàn) 獲得超4個(gè)贊
第一次會(huì)從IL執(zhí)行,然后是函數(shù)本身
第二執(zhí)行,就直接從函數(shù)本身開(kāi)始。
- 2 回答
- 0 關(guān)注
- 824 瀏覽
添加回答
舉報(bào)
0/150
提交
取消