Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在ASP.net中动态生成HTML表会导致严重的性能问题吗?_Html_Asp.net_Performance_Html Table - Fatal编程技术网

在ASP.net中动态生成HTML表会导致严重的性能问题吗?

在ASP.net中动态生成HTML表会导致严重的性能问题吗?,html,asp.net,performance,html-table,Html,Asp.net,Performance,Html Table,我正在处理一个包含几个动态生成的表的页面,其中原始开发人员使用了大约以下逻辑: <table> <tr>...</tr> <asp:PlaceHolder ID="ph1" runat="server" /> </table> 在一个页面中,像这样的方法被用于总计10-15行,其中10-15列分布在4-5个表中。表结构已设置,因此也可以通过在html中硬编码表结构并在每个单元格中放置文字和标签来构建。页面本身存在一些性能问题。

我正在处理一个包含几个动态生成的表的页面,其中原始开发人员使用了大约以下逻辑:

<table>
  <tr>...</tr>
  <asp:PlaceHolder ID="ph1" runat="server" />
</table>
在一个页面中,像这样的方法被用于总计10-15行,其中10-15列分布在4-5个表中。表结构已设置,因此也可以通过在html中硬编码表结构并在每个单元格中放置文字和标签来构建。页面本身存在一些性能问题。这是可能导致业绩不佳的因素之一

问题是:

  • 动态创建这么多的表单元并在代码隐藏中构建表,与硬编码表并使用文字/标签填充数据相比,这可能会带来很大的性能问题(即:值得切换吗)
  • 或者更准确地说,在这种情况下,它不会如此重要(或者至少不足以保证将动态表生成重写为硬编码表+文本所需的时间)
这并不理想,但我怀疑真正的问题是提供这种逻辑的数据源。加快它用于获取数据的任何查询。

通过使用文字(在任何方向)和您提到的卷,这段代码的性能都不会得到显著增强,我怀疑您甚至无法测量差异

  • 如果是这样的话,它们一定是边缘化的,以至于你不会注意到。我用这种方式用10x50单元格编码了gridviewish控件,与类似大小的静态表相比,没有明显的性能问题

  • 在大多数情况下,您应该争取的是可维护性:)


  • Yaakov,我更担心的是在客户端使用这种呈现代码会发生什么。我是说。。。这取决于如何为每个单元格设置单元格呈现(格式、CSS、类/ID)


    如果你最终得到了大类名/ID和内联CSS,则应考虑手动生成表结构(甚至不使用文字)。在我看来,所有这些表的内容都只是文本,因此您可以自然地呈现它,而不需要任何控制开销。

    简短回答:不太可能

    详细回答:这取决于你对“重大”的定义。假设您在一台具有快速连接的体面服务器上生成一个典型的HTML页面,则故障情况如下:

  • 从数据源加载数据:50-300ms
  • 生成1125个表格单元格(15 x 15 x 5):50-100ms
  • 汇编HTML文档:10-20ms
  • 通过互联网发送HTML页面:150-1000ms
  • 在浏览器中呈现HTML页面:50-500毫秒

  • 这些数字显然是估算的——重要的一点是第(2)步相对于所有其他步骤的成本。当优化步骤(2)只占总成本的一小部分时,花时间进行优化并不能很好地利用开发人员的时间。正如CodeSpeaker所说,干净和可维护的代码是一项更好的投资。如果加载页面的总时间确实是一个问题,那么在进入管道的其余部分之前,首先解决主要成本问题(步骤1和步骤4)。

    因此,如果它在性能上得到了显著提高,那么为什么我无法衡量差异?我通常把“显著增强”理解为我会注意到的东西。。。
    // Do lots of stuff
    HtmlTableCell cell = new HtmlTableCell();
    // set cell text, formatting, etc
    ph1.Controls.Add(cell);
    // repeat the above logic for every cell in the table