gpt4 book ai didi

c# - session 中的数组、字典或列表?

转载 作者:行者123 更新时间:2023-11-30 17:23:25 25 4
gpt4 key购买 nike

在 session 中存储一组值的最有效方法是什么?我猜它是列表/数组或字典。基本上,当用户从 DropDownList 中选择一个项目时,一个值 ( between 1 and N where N <= 20 ) 被发送回服务器。然后我希望这个值在 session 中用作索引(如果使用数组)或键(如果使用字典)。我不希望用户看到该值,因此不将其存储在 DDL 中。据我所知,字典是为键查找而设计的。但是,由于规模很小,在这种情况下使用字典是否会产生任何开销,从而降低效率?每个相应的值对用户来说都是唯一的,因此我决定使用 session 。

谢谢你的建议

最佳答案

在这里,数组将是您的最佳选择。

如果您打算添加一些更多的自定义类型而代码更改最少,则字典可能更具可扩展性。从 Dictionary 中获取项目通常是 1 跳操作。但是使用 Dictionary 的唯一开销是序列化。仅当您使用 SQLServer 或 StateServer 存储 session 时才会涉及序列化。

我做了一些基准测试,我使用 BinaryFormatter 序列化一个 int 数组、List 和一个字典。

我将每个对象序列化了 100000 次。每个数据结构包含 20 个值。以下是结果:

int[] took 1955 ms to serialize
List<int> took 4135 ms to serialize
Dictionary<int,int> took 27917ms to serialize

所以在涉及到序列化的时候使用Dictionary要小心。

========================================为了支持我的论点,即从字典中获取一个项目非常有效,我还做了一些基准测试,我在每个数据结构中存储了 20 个项目(我在上面使用过)并获取了 10000000 次项目。这是结果

int[] took 136 ms to serialize
List<int> took 184 ms to serialize
Dictionary<int,int> took 877 ms to serialize

当然比其他两个慢一点,但它提供了比其他两个数据结构更多的可扩展性。

但如果它是固定数量的项目,那么就选择数组。在这种情况下,它们是最有效的。

关于c# - session 中的数组、字典或列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2205027/

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