我有大对象,我想通过字符串标识符访问。我目前的做法是使用字典包含这些:大对象字典与数组索引字典
var myObjects = new Dictionary<string, LargeObjectClass>();
var specificObject = myObjects["identifier"];
现在我想知道是否存储许多在字典那些大型的对象可能是坏的表现,我会用字典来索引存储到会更好实际存储对象的数组:
var myObjects = new LargeObjectClass[size];
var objectIndices = new Dictionary<string, int>();
var specificObject = myObjects[objectIndices["identifier"]];
这显然是一个不错的办法如果myObjects
大小是事先未知的或可能在运行时改变,但由于字典是小,我读的地方,阵列更比字典更有效率,我认为这种方法可能在c中有更好的表现Ases的大小是固定的。
假设对象非常大,哪种方法更高效?
为什么不自己测试一下呢?那么你肯定会知道。 – user469104
在Dictionnary中,该对象只是对原始对象的引用。对象未被克隆。因为int小于对象引用,所以使用int而不是对象“address”提供了小内存优势。但是,它在性能方面效率更高,因为跳过了一个间接方法。但是,所有的好处/缺点并不重要。作为结论,保持你的第一个方法,即对象的字典。 –
Graffito
@Graffito:在字典中使用整数可以使字典本身更小,但向需要存储所有对象引用的数组中添加数组只是将所有已保存的空间再次添加回来,对吧? – StriplingWarrior