C#如果我使用大型ViewState名称,性能会降低吗?

时间:2009-04-01 03:32:38

标签: asp.net performance

我个人喜欢下面的选项1以保持可维护性,但我可以看到选项二让我获得更好的性能。选项三可能是完全垃圾。

1. ViewState["Calendar1.SelectionMode"] = Calendar1.SelectionMode;
2. ViewState["CSM"] = Calendar1.SelectionMode;
3. ViewState["Calendar1_SelectionMode"] = Calendar1.SelectionMode;

我是否应用旧学校的维护习惯?仅当物体数量很大时才重要吗?我看不到内部使用任何东西,只是一个非常有效的哈希。我已经阅读了加速页面加载的方法,但没有直接建议,因为这甚至是一个轻微的因素。所有文献都讨论的是使用紧凑类型,仅使用非默认值的值来填充数据库访问读取的视图状态。

3 个答案:

答案 0 :(得分:7)

选项二可能会给你更好的表现,但差别非常小。如果您遇到性能问题,这将是我寻找瓶颈的最后一个地方。您是否在页面上进行了任何类型的分析?这就是我开始寻找的地方。

答案 1 :(得分:4)

键名成为viewstate隐藏字段的一部分。原油示例:

protected void Page_Load(object sender, EventArgs e)
{
    // ViewState["a"] = 1;
    // <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE"   
    // value="/wEPDwUJNzgzNDMwNTMzDxYCHgFhAgFkZCdtAzza2+uuoGpYdGLBUdCkUGe7" />

    // ViewState["this is a very very very very long key"] = 1;
    // <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" 
    // value="/wEPDwUJNzgzNDMwNTMzDxYCHiZ0aGlzIGlzIGEgdmVyeSB2ZXJ5IHZlcnkgdmVyeSBsb25nIGtleQIBZGSmj9cou408+XXRLxCLKcEoLngriA==" />

}

底线:除非您存储大量密钥,否则可能不是问题。

答案 2 :(得分:1)

使用性能指标的答案实际上是肯定的,您放入ViewState的键的名称确实会影响加载特性。影响并不严重,并且看起来并不像线一样增长。

关键点似乎是120个物体。下一个统计差异出现在大约270个对象上。请注意我只改变了键的大小,并在Calendar.SelectionMode对象中保持推..我正在选择能够帮助我完成上述结论的答案。

基准决赛:

使用大键的效果是PAGELOAD TIME - 使用小键的PAGELOAD时间

  • 0000 - 0120 0.007秒
  • 0120 - 0270 2.254秒
  • 0270 - 1050 2.956秒
  • 1050 - 2000 4.873秒

结果精确到0.05秒,置信区间为99%。