gpt4 book ai didi

asp.net - 在 ASP.NET 中调用和读取 Session 对象需要多少资源?

转载 作者:行者123 更新时间:2023-12-03 17:18:24 24 4
gpt4 key购买 nike

我想知道像这样调用 Session 对象有多浪费(示例):

string test = string.Empty;
for (int i = 0; i < 1000; i++)
{
test += Session["test"].ToString() + ",";
}

而不是像这样:

string test = string.Empty;
string test_session_value = Session["test"].ToString();
for (int i = 0; i < 1000; i++)
{
test += test_session_value + ",";
}

(即多次调用 HttpSessionState 对象并从中读取 session ,而不是尽可能减少次数)

是否有任何性能损失(明显)?开发人员应该在多大程度上注意 HttpSessionState 对象的使用?

最佳答案

session 在页面加载时完全读取,并在页面卸载时保存。所以序列化和反序列化每页只发生一次!

session 保存/将数据保存在 Dictionary<string,object> 中对象。

所以当你做这个的时候

string test = string.Empty;
for (int i = 0; i < 1000; i++)
{
test += Session["test"].ToString() + ",";
}

实际上,Session 调用的是 Dictionary,因为它使用索引,所以在他的列表中找到一个项目时速度非常快。

现在我在这段代码中必须注意的是,您在使用真正昂贵的行的字符串时犯了一个错误。要真正快速,您必须使用 StringBuilder ,但可以说这不是真正的代码,而只是您显示它的方式。

StringBuilder test = new StringBuilder();
for (int i = 0; i < 1000; i++)
{
test.Append(Session["test"].ToString());
test.Append(',');
}

Is there any performance penalty ?

在现实生活中,我不认为您每页调用 1000 次 session 变量,因此 session 不会有明显的延迟。值得注意的是, session 会锁定所有用户,直到页面加载和卸载。

亲戚:Replacing ASP.Net's session entirely

关于asp.net - 在 ASP.NET 中调用和读取 Session 对象需要多少资源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10587703/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com