gpt4 book ai didi

c# - 大对象字典与数组索引字典

转载 作者:太空宇宙 更新时间:2023-11-03 19:58:15 25 4
gpt4 key购买 nike

我想通过字符串标识符访问大型对象。我目前的方法是使用包含这些的字典:

var myObjects = new Dictionary<string, LargeObjectClass>();
var specificObject = myObjects["identifier"];

现在我想知道在 Dictionary 中存储许多大型对象是否会影响性能,我最好使用 Dictionary 将索引存储到实际存储对象的数组中:

var myObjects = new LargeObjectClass[size];
var objectIndices = new Dictionary<string, int>();
var specificObject = myObjects[objectIndices["identifier"]];

如果 myObjects 的大小事先未知或可能在运行时发生变化,这显然是一个糟糕的方法,但由于 Dictionary 较小,而且我在某处读到数组比 Dictionaries 更有效,我我认为这种方法在大小固定的情况下可能会有更好的性能。

假设对象非常大,哪种方法更有效?

最佳答案

你最好只使用 Dictionary<>在这种情况下。请记住,字典和数组都只存储对大对象的引用,因为 class实例是引用类型。因此,如果存储 int,Dictionary 只会稍微小一些。 s 而不是存储任何对象。这个小差异随后会被您的数组本身存储对象引用这一事实所掩盖,因此合并后的总数将比仅字典占用更多空间。

数组只有在允许您完全避免使用字典的情况下才能为您提供更好的性能。例如,如果您根据连续的 int 键控对象,则可能会发生这种情况。值而不是 string秒。但是在字典之上添加一个数组在各个方面都会变得更糟。

此外,作为一般规则,您应该使用最简单、最可维护的方法,直到出现性能问题。 Dictionary<>除非您调用它数百万次,否则极不可能导致任何性能问题。

关于c# - 大对象字典与数组索引字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31170674/

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