2009-08-03 73 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

不需要。除非您使用的是网站项目,否则需要在第一次点击时编译该网站。这影响了内联以及代码的一些扩展。之后,他们以相同的速度运行。