我很想知道使用Dictionary
值类型键和包含在引用类型(int
)中的整数之间IntId
读写性能的差异。
使用int
进行实例化:
new Dictionary<int, SomeValue>();
使用IntId
进行实例化:
new Dictionary<IntId, SomeValue>();
平均表现结果在撰写和阅读200,000项时产生以下结果:
IntId
写作速度提高了2倍int
阅读速度提高了3倍这两个结果之间的差异是什么?
IntId
类:
public class IntId
{
public int Value { get; private set; }
public IntId(int value)
{
Value = value;
}
public override bool Equals(object other)
{
var entity = other as IntId;
if (entity == null)
{
return false;
}
else
{
return (this.Value.Equals(entity.Value));
}
}
public override int GetHashCode()
{
return Value.GetHashCode();
}
}
答案 0 :(得分:1)
这些结果之间的差异很可能与获得它们的方法密切相关。
您的IntId是一个小型参考对象。创建一个需要内存分配。
整数是一个值对象,但可能需要在您的集合中使用装箱。
分配给键的值会影响散列函数的效率。
有许多因素需要考虑。在仔细审查它们是如何获得之前,我不会接受面值的结果。