代码隐藏比内联代码更快吗?

时间:2009-08-03 18:22:57

标签: c# asp.net

根据问题:Is C# code faster than Visual Basic.NET code? 据说C#和VB.NET最后生成了相同的CLR代码。

但是当我使用代码隐藏和内联代码时,是否有不同的性能(忽略使用的语言)?

5 个答案:

答案 0 :(得分:6)

内联代码可以在第一次发出请求时需要编译。之后(或者如果它是预编译的),它们之间绝对没有区别。

顺便说一句,即使它需要编译,速度差异应该是微不足道的,因为ASP.NET无论如何都必须编译源文件。差异将归结为在大型源文件中添加几行代码!

答案 1 :(得分:1)

是的,是的...如果你在运行时进行编译,那么你总是比不需要编译的东西更贵,但是编译将在第一次编译后缓存(如果你愿意)请求,这样你就可以获得零差异。

可能有一些人知道另一个原因,但在我看来,内联的唯一现实目的是能够在没有重建+重新部署的情况下制作热修复:你可以在小型或早期开发项目中做的事情。就个人而言,我也发现内联只是一点......美学上令人不悦。

答案 2 :(得分:1)

ASP.Net无论如何都必须解析和编译aspx页面,因为ASP.Net将它们转换为继承自代码隐藏的类(因此是page指令中的inherit属性),因此在任何一种情况下都需要进行编译。除非我们谈论几千行代码,否则第一次运行的两者之间的差异可以忽略不计。

但我同意安娜:内联是icky。

答案 3 :(得分:0)

我不确定生成的程序集是否将AllowOptimize属性设置为on或off。我找不到任何表明这种方式的文件。

因此,JIT可能无法以完全相同的方式优化生成的代码。

我怀疑这会产生重大影响,如果有的话(比如我说这可能会以某种其他方式控制),但肯定会影响某些操作,例如,禁用内联并且你有一个非常紧凑的大循环。在asp.net页面中,这样的构造可能是一个糟糕的选择,所以这不应该是一个问题。

答案 4 :(得分:0)

没有。除非您使用的是Web项目,否则该网站需要在首次点击时进行编译。这会在一定程度上影响内联和代码。之后他们几乎以相同的速度跑。