2009-08-03 23 views

回答

6

嵌入代碼可以第一次請求編譯時需要編譯。之後(或者預編譯),它們之間絕對沒有差別。

順便說一下,即使它需要編譯,速度差異應該是微不足道的,因爲ASP.NET將不得不編譯源文件。差異將歸結爲在大型源文件中添加幾行代碼!

+0

是不是整個模板編譯? – Dykam 2009-08-03 19:33:31

+0

將整個aspx編譯爲C#/ VB源代碼,直接將代碼直接包含在適當的位置。 C#源代碼將被編譯爲IL程序集。 – 2009-08-04 06:06:33

1

是的,ish ...如果你在運行時編譯你總是會比不需要的東西更昂貴,但是編譯後會被緩存(如果你願意的話)第一次請求,所以你會得到零差異從那時起。

有可能是somone誰知道另一個原因,但在我看來,內聯的唯一現實目的是在沒有重建+重新部署的情況下進行熱修復的能力:您可能在小型或早期階段開發項目中做的事情。就我個人而言,我也發現內聯只是一點點......美學上令人不快。

1

無論如何,aspx頁面必須被解析和編譯,因爲ASP.Net會將它們轉換爲繼承代碼隱藏的類(因此是頁面僞指令中的繼承屬性),因此在任何情況下編譯都是必需的。除非我們談論數千行代碼,否則第一次運行的兩者之間的差異將可以忽略不計。

但我同意anna:inline是icky。

0

我不確定生成的程序集是否將AllowOptimize屬性設置爲打開或關閉。我找不到任何文件表明這種方式。

因此,生成的代碼可能並未通過JIT以完全相同的方式進行優化。

我懷疑這會產生顯着差異,如果有的話(比如我說這可能是以某種其他方式控制的),但它肯定會影響某些操作,例如,如果它禁用了內聯,並且您有一個大的非常緊密的循環。這樣的構造可能是一個不好的選擇,所以這不應該成爲一個問題。

0

不需要。除非您使用的是網站項目,否則需要在第一次點擊時編譯該網站。這影響了內聯以及代碼的一些擴展。之後,他們以相同的速度運行。