ASP.net:转发器与表与StringBuilder的动态创建 - 性能问题

时间:2009-11-17 16:45:45

标签: asp.net

问题:我的公司目前有一个大约需要3秒钟才能运行的查询,但显示数据的表创建大约需要30秒才能完成。大部分都是简单的:

Dim MainTable as New Table
Dim TableR as New TableRow
Dim TableC as New TableCell
TableCell.Text = "Some data"
TableRow.Controls.Add(TableC)
MainTable.Controls.Add(TableR)

现在,在大约550条记录上,此操作的性能约为30秒。我尝试将过程改为使用Strings:

Builder.Append("<tr><td>Something</td></tr>")

但没有真正的改善。我的问题是关于努力提高绩效。

转发器实际上会更快吗?

3 个答案:

答案 0 :(得分:2)

您确定知道瓶颈在哪里吗?您应该测量实际的循环执行,完成客户端请求所花费的时间以及客户端呈现页面所花费的时间。

除非你在循环中执行一个不同的,异常昂贵的操作,否则看起来很可能需要花费StringBuilder循环才能进行550次迭代。

性能影响更可能是由于:

1)将数据从服务器发送到浏览器的时间过长。

2)客户需要很长时间才能真正呈现页面。

这两者通常都有相同的原因 - 您发送浏览器的HTML太大了。 (这也可以通过在ViewState中保存大量内容来实现,这会增加您发送给客户端的数据量。)无论如何,您需要先进行这些测量以找出问题所在

答案 1 :(得分:1)

您是否尝试将数据绑定到gridview对象?

答案 2 :(得分:0)

我刚刚回答了另一个问题,即用户在尝试绑定到2k +记录时遇到类似问题。也许有一些指针可以帮助你提高速度:

Asp.net binding big dataview to DataGrid

相关问题