在C#中使用EqualityComparer优化了类型比较效率
发布时间
阅读量:
阅读量
本系列内容源自跟随 Stephen Toub 大佬学习性能优化的相关经验,主要总结了其在为 WPF 框架进行性能优化过程中所涉及的知识点,其中通过 EqualityComparer 静态类中的相等判断方法,对值类型的相等比较性能进行了有效提升。在部分泛型类型中,当需要执行值相等判断时,默认会调用 Equals 方法,具体示例如下代码所示。
public override bool Contains(T value)
{
return _loneEntry.Equals(value);
}
请暂时忽略上述代码中的 _loneEntry 字段,但需注意,当前代码中调用的 Equals 方法参数为 object 类型,这意味着在调用 Equals 方法时将发生装箱操作。依据 C# 编程基础理论,一旦出现装箱操作,必然伴随对象的内存分配。因此,每次调用此类方法时,都会产生一次内存对象的分配行为。为提升性能,可采用 EqualityComparer 方法进行优化。通过使用 EqualityComparer,不仅能够继续利用泛型进行判断,还能有效减少内存分配的次数。
public override bool Contains(T value)
{
全部评论 (0)
还没有任何评论哟~
