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

首頁 > 編程 > .NET > 正文

淺談.NET 3.5 SP1中的JIT增強_.Net教程

2024-07-10 12:51:01
字體:
供稿:網(wǎng)友

推薦:如何將 PHP 編譯成 .NET
內(nèi)容管理公司 Jadu 最近發(fā)布了一個工具,可以讓 PHP 和 .NET 這對冤家和平共處。他們開 發(fā)了一個叫做 Phalanger PHP compiler 的 工具,可以將 PHP 程序編譯成本地 .NET 程序執(zhí)行。他們還準(zhǔn)備將這一工具開源。 據(jù) Jadu CEO Suraj Kika 介紹,這個工具對 PHP

在.NET平臺里,大部分編譯器的優(yōu)化并不是通過VB和C#編譯器來完成的。它們寧可把優(yōu)化的處理推后到CLR的即時(Just In Time,JIT)編譯器讀取IL,并轉(zhuǎn)換為原生機器碼的時候來完成。由于這個原因,對JIT的改變會極大地影響之前編譯好的程序集。

一個主要的影響就是內(nèi)聯(lián)函數(shù)(Inlining Function)調(diào)用。之前,JIT對內(nèi)聯(lián)方法的處理非常保守,Vance Morrison解釋了個中緣由,

它對內(nèi)聯(lián)的處理并不是很好。內(nèi)聯(lián)總是減少指令執(zhí)行的數(shù)量(這是由于最低限度的調(diào)用和返回指令沒有被執(zhí)行),但是它能(并經(jīng)常)讓結(jié)果代碼變得很大。大部分人都能直覺地理解,內(nèi)聯(lián)大的方法(比如1Kb的)不是很有意義,而內(nèi)聯(lián)非常小的方法可以讓調(diào)用的占用空間更小(由于調(diào)用指令才5字節(jié)),這樣的選擇總是正確的,但是介于兩者之間的方法要如何處理呢?

有趣的是,當(dāng)你讓代碼變大時,你也就讓它執(zhí)行緩慢,因為內(nèi)存天生地緩慢;你的代碼越大,它越不會放在最快的CPU緩存(稱之為L1)里面執(zhí)行,在那樣的情況下,處理器需要執(zhí)行3-10個周期直到它能從另外的緩存(稱之為L2)中獲取到執(zhí)行代碼,如果L2緩存中還不存在,那么就需要到主內(nèi)存中獲取(需要花費10 周期)。對于在緊密循環(huán)中執(zhí)行的代碼,這樣的結(jié)果不會有什么問題,因為所有的代碼都適合放入到最快緩存中(典型的是64K),不過對于“常規(guī)的”代碼,它通過大量的方法來執(zhí)行大量的代碼,“越大就越慢”的效果就非常顯著。更大的代碼也就意味著在啟動時從磁盤獲取代碼需要更大的磁盤I/O,這就意味著你的應(yīng)用程序啟動較慢。

在Service Pack 1中,微軟引入了一個新的基于代碼尺寸的啟發(fā)式算法,來判斷調(diào)用是否處于一個循環(huán)中。在常規(guī)情況下,函數(shù)只有當(dāng)在調(diào)用空間中的結(jié)果機器碼比原始版本要小時,才能被內(nèi)聯(lián)。這樣做就保證了盡可能多的代碼能適合CPU的緩存,當(dāng)緩存不夠用時,就能對性能產(chǎn)生巨大的影響。

當(dāng)處在循環(huán)中時,分部異常也可以很好地工作。這是因為據(jù)推測函數(shù)通常會被多次調(diào)用,所以CLR允許內(nèi)聯(lián)函數(shù)可以增長至原始調(diào)用大小的5倍大。類似值類型優(yōu)化這樣的條件有可能更進一步地增加容許尺寸的大小。

分享:談ASP.NET中XML數(shù)據(jù)的處理
SqlDataSource和ObjectDataSource控件都是平面表格式的數(shù)據(jù)源控件,操作也相對簡單,在這里我就不細說了。 ASP.NET中XML數(shù)據(jù)是怎樣的處理呢?下面就詳細講解。 在這里我主要談下用于連接XML文件的XmlDataSource和用于連接站點導(dǎo)航數(shù)據(jù)的SiteMapDataSource這

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 涿州市| 县级市| 古田县| 常州市| 兴城市| 宜宾市| 临沂市| 军事| 金溪县| 资源县| 绿春县| 洪江市| 邹平县| 遂溪县| 庆元县| 天等县| 虹口区| 蒙城县| 琼中| 福清市| 察隅县| 潜山县| 丹凤县| 长海县| 阳东县| 阿勒泰市| 喜德县| 汾西县| 双鸭山市| 新蔡县| 盐津县| 托里县| 灵台县| 沙坪坝区| 连平县| 尼木县| 皮山县| 大城县| 武安市| 广宗县| 榕江县|