国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

《CLR.via.C#第三版》第一部分讀書筆記(一)

2019-11-17 02:46:57
字體:
來源:轉載
供稿:網友

《CLR.via.C#第三版》第一部分讀書筆記(一)

2014-11-05 23:04 by hangwei, ... 閱讀, ... 評論, 收藏, 編輯

最近開始仔細研讀《CLR.via.C#第三版》這本書。讀pdf文檔確實很累。建議有條件的朋友還是買書看吧。

我的筆記用來記錄我對這本書的理解,簡化下邏輯,對每個部分我覺得是要點的進行歸納總結。特別基礎的東西不會做過多的闡述。

第一部分講的是CLR基礎。

首先還是重新說下CLR的概念:“CLR 是一個可由多種編程語言使用的“運行時”。可用任何編程語言來開發(fā)代碼,只要編譯器是面向CLR的就可以了”。這里要重新解釋下“只要編譯器是面向CLR的就可以了”這句話。初學者一般不認同.net平臺跨語言,或者說所謂的“跨語言”是在微軟推出的范圍內的語言。這個認識其實是錯誤的。任何語言都可以面向CLR來創(chuàng)建自己的編譯器。我們熟知的Iron Ruby、Perl、php都有面向CLR的編譯器。圖1-1展示了編譯源代碼文件的過程。

比較重要的認知是CLR實際不和托管模塊一起工作,而是和程序集一起工作。程序集包含了托管模塊和資源文件等其它文件。

IL(中間語言)可以使用匯編語言來寫。CLR中的JIT(just in time)也叫即時編譯器,里面有個函數JITComplier(),此函數的職責是把要執(zhí)行的方法的IL轉換成本地CPU指令。

類中方法的調用過程:

一個方法執(zhí)行的時候總的來說會被調用兩次。(這里暫定方法名為Test())

第一次調用:

JITCompiler()會把Test()方法的IL代碼編譯成本地CPU指令(此指令會被保存到一個動態(tài)分配的內存塊中),Test()方法在內存塊中會通過JITComplier執(zhí)行一遍(包括查找方法的IL,驗證方法的IL,編譯,執(zhí)行)。

第二次調用:

完全跳過JITCompiler(),Test()方法在內存中再執(zhí)行一遍。

兩次執(zhí)行的過程如圖1-4,1-5所示:

需要注意的是本地CPU指令是存儲到動態(tài)內存中的,一旦程序終止,本地CPU指令將會被丟棄。

Debug版本和Release版本的區(qū)別本質上是IL代碼質量和JIT本地代碼質量是否經過優(yōu)化。從性能上考慮,程序部署、發(fā)布,最好是用Release版本。

這個部分還有程序打包、部署、程序集信息等內容。這里就不闡述了。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 明星| 元朗区| 井陉县| 莱州市| 吴忠市| 霸州市| 吴江市| 合肥市| 神池县| 陇川县| 萝北县| 南阳市| 普兰县| 安远县| 衡阳市| 赤壁市| 南乐县| 祁阳县| 体育| 绥宁县| 乌兰察布市| 开化县| 广德县| 乌兰察布市| 东方市| 黑山县| 岱山县| 汕头市| 建始县| 尼勒克县| 苏尼特左旗| 贵港市| 都昌县| 龙南县| 惠东县| 嵊泗县| 梨树县| 霸州市| 江都市| 彭阳县| 广河县|