gpt4 book ai didi

c# - ASP.NET session - 大对象与许多小对象

转载 作者:太空狗 更新时间:2023-10-29 20:40:18 25 4
gpt4 key购买 nike

我有一个场景可以优化我的网络应用程序在 session 中存储和检索数据的方式。我应该指出,我正在使用 SQL Server 作为我的 session 存储。

我的方案是我需要在用户 session 中存储映射到字符串值的唯一 ID 列表以供以后使用。我继承的当前代码使用的是 List<T>使用自定义对象,但我已经可以看到某种字典的性能要好得多。

我测试了两个替代方案:

  1. 存储 Dictionary<int, string>在 session 中。当我需要取回字符串时,我从 session 中获取一次字典,然后可以测试字典对象上的每个 ID。

  2. 由于 session 本身基本上就像一个字典,因此使用唯一的 session key 将字符串直接存储在 session 中,例如Session["MyString_<id>"] = stringValue" .从 session 中获取值基本上是逆运算。

根据我需要执行的操作并使用 100 个字符串,我的测试结果显示如下:

  • 字典 - 4552字节,0.1071秒完成运算
  • Session Direct - 4441 字节,0.0845 秒完成操作

从这些结果中我看到我在 session 中节省了一些空间(可能是因为我没有序列化字典对象的开销)并且从 session 中取回值时似乎更快,可能是因为字符串反序列化比对象更快。

所以我的问题是,在 session 中存储许多较小的对象而不是一个大对象是否对性能更好?存储许多较小的对象与存储一个我没见过的较大对象有什么缺点吗?

最佳答案

序列化和搜索大型对象会受到惩罚(由于需要表示更复杂的结构,它们会占用更多空间和处理器时间)。

既然只能进行一次搜索,为什么还要进行 2 次搜索。

此外,所有处理缓存/存储解决方案的文档都提到,基于计算键从列表中序列化单个值比存储所有字典并检索并在其中搜索要高效得多。

关于c# - ASP.NET session - 大对象与许多小对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9429462/

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