Advertisement

在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)

还没有任何评论哟~