性能会话变量,请求字符串与本地变量

时间:2011-12-08 00:17:16

标签: asp.net

我刚刚从以前的开发人员中选择了一个项目,我在他的代码中注意到他将数据加载到母版页中的会话变量中,并将其存储到母版页的局部变量中,以便使用它。

即:

母版页中的

public class Master_Page
{
   public string some_data = string.empty;

    public void Page_Load()
    {
        some_data = Session["some_data"];

    }
}

public class Inherted_Page : Page
{
    public void some_method()
    {
        Response.Write( ((Master_Page)Master).some_data );
    }
}

我想知道是否因为访问会话变量需要比局部变量更长的时间? 我想知道请求字符串是否相同?

2 个答案:

答案 0 :(得分:1)

访问Session对象比访问实例变量要慢,因为它需要哈希表查找。

我相信Request对象也使用哈希表。

话虽如此,性能提升相当低,除非你做了很多,因为哈希表查找往往是O(1),特别是对于会话或请求的典型小尺寸(我怀疑计算密钥的哈希可能需要比查找本身更长的时间。)

答案 1 :(得分:0)

如果您不需要此数据来保持并跟随您的用户访问整个会话,但只需要页面,只需一次加载,那么会话数据就会很糟糕,而且存储值的速度也会较慢,而且可能会导致错误。

因此,如果您只需要将some_data用于此页面生活,只需将数据从母版页传输到子页面,那么您必须使用页面上的变量。

如果您的会话需要一些跟随您的用户的变量,那么您可以使用会话数据。