【发布时间】:2011-10-28 04:32:30
【问题描述】:
我正在研究为什么我的一个应用程序运行缓慢。应用程序生成并显示一个网格,并用工作任务填充它(呈现为表格单元格)。在每个任务中都有一个<a href="...,它会显示有关该任务的更多信息。
由于这一切都是从代码隐藏动态构建的,我使用HTMLTableRows/Cells 创建行和单元格,然后使用Controls 属性添加HTMLAnchors。每当我设置属性时,我都会使用HTMLAnchor.HRef、HTMLTableCell.ColSpan 等。
我注意到,如果我使用通用 HTMLGenericControl,然后使用它的 Attributes 集合,例如
HTMLGenericControl a = new HTMLGenericControl("a");
a.Attributes["href"] = task.getLink();
它的运行速度比我认为做同样事情的首选方式要快得多:
HtmlAnchor a = new HTMLAnchor;
a.HRef = task.getLink();
有人对这种明显的额外“开销”的来源有任何解释吗?
编辑
如果有人对我的解释感到困惑,我为同一个项目发布了另一个问题,其中有一个screenshot。
【问题讨论】:
-
慢是什么意思?浏览器是否需要一段时间来呈现 HTML?还是生成 HTML 需要一段时间?在 system.web 部分的 Web.Config 中,添加以下
<trace enabled="true" localOnly="true" requestLimit="1000" pageOutput="true"/>,您可以准确地看到时间花费在哪里 -
@s_hewitt 这真的很有用,谢谢。看起来最大的时间延迟是在页面加载开始和结束之间,以及渲染开始和结束之间。当我使用 GenericControl 方法时,时间几乎减半。
-
处理页面的总时间与渲染相比如何?例如,如果跟踪中的总时间是 1 秒,但页面在浏览器中加载需要 5 秒 - 那么页面的传输很慢,或者呈现很慢。
-
@S_hewitt 忍受我 - 我必须回去工作来测试这个!会不断更新这个问题。
-
我无法回答为什么它会更慢,但我的想法是,在控制方面,最小的公分母总是会更快;也就是说,纯 HTML 将比 ASP.NET 控件更快。同样,HTMLAnchor 可能是一个或多个基本控件类的子类(这会增加开销)。但是通用控件可能只是使用HTML编写器来呈现你想要的标签和你指定的属性,不多也不少。
标签: c# asp.net html performance