首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ASP.NET compilationMode自动vs从不

ASP.NET compilationMode自动vs从不
EN

Stack Overflow用户
提问于 2009-09-13 02:44:13
回答 3查看 2.2K关注 0票数 4

让我们假设我的ASPX页面没有内联C#代码块。

因此,我可以安全地设置

代码语言:javascript
复制
<pages compilationMode="Never" />

...in我的web.config文件,不用担心编译错误。

在性能方面,使用以下设置会有任何损失吗?

代码语言:javascript
复制
<pages compilationMode="Auto" />

也就是说,“自动”检测是否需要大量的时间?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-09-13 04:10:22

Auto的影响似乎很小。(尽管显然比Never更多)。

如果我们检查System.Web.UI.TemplateParser中的代码,我们会在ImportSourceFile中看到,如果模式设置为Never,那么进程将提前中止

代码语言:javascript
复制
if (this.CompilationMode == CompilationMode.Never)
{
    return null;
}

这当然是有帮助的,而且绝对是影响最小的。但是,继续浏览TemplateParser中的例程,我们可以看到在ParseStringInternal中,解析器逐字扫描加载的模板,搜索<%的变体

代码语言:javascript
复制
if (!this.flags[2] && (match = BaseParser.aspCodeRegex.Match(text, startat)).Success)
{
    string str3 = match.Groups["code"].Value.Trim();
    if (str3.StartsWith("$", StringComparison.Ordinal))
    {
        this.ProcessError(SR.GetString("ExpressionBuilder_LiteralExpressionsNotAllowed", new object[] { match.ToString(), str3 }));
    }
    else
    {
        this.ProcessCodeBlock(match, CodeBlockType.Code, text);
    }
}

请注意BaseParser.aspCodeRegex,它是此模式的一个实例:

代码语言:javascript
复制
public AspCodeRegex()
{
    base.pattern = @"\G<%(?!@)(?<code>.*?)%>";
    ...
}

如果它没有遇到任何问题,它就会继续前进。搜索是一个相当便宜的操作-最大的打击是当实际找到代码块时,编译它们。

票数 4
EN

Stack Overflow用户

发布于 2009-10-17 15:31:11

我不确定我是否同意Auto应该比Always性能更好的建议。在这个问题上有一个similar的问题,我认为最终'Auto‘(以及未编译的页面)被引入是为了提供更好的可伸缩性,而不一定是更好的性能(除了初始编译/解析开销之外)。

如果Auto在每个场景中都表现得更好,为什么它不是默认的呢?

具有少量固定数量的程序集的应用程序将受益于标准的Always设置和站点范围的预编译;对于像SharePoint这样的类似CMS的场景,页面在运行时更改,出于剪切的需要,Auto是唯一的选择。

我在我们的场景(几百个程序集,运行时不变)中不知所措的是,在应用程序预热很久之后,甚至在整个站点预编译的情况下,JIT中的% Time为什么会波动,有时会高于60%?如果这在200-500个程序集部署中很常见,那么我也可以看到自动在这些场景中的好处。

票数 3
EN

Stack Overflow用户

发布于 2009-09-13 04:08:44

自动应该比Always性能更高,并且对于您添加内联C#代码时是一个安全的故障保护。

确定页面是否需要编译将花费额外的时间,与Never选项相比,这会增加一些开销。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1416711

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档