Changeset 15162


Ignore:
Timestamp:
07/06/17 14:42:50 (3 weeks ago)
Author:
jkarder
Message:

#2730: improved equality comparers

  • got rid of one extra comparison
  • fixed RealVectorEqualityComparer
Location:
trunk/sources
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.Encodings.BinaryVectorEncoding/3.3/BinaryVectorEqualityComparer.cs

    r15067 r15162  
    2828  public class BinaryVectorEqualityComparer : EqualityComparer<BinaryVector> {
    2929    public override bool Equals(BinaryVector x, BinaryVector y) {
    30       if (x == null && y == null) return true;
     30      if (ReferenceEquals(x, y)) return true;
    3131      if (x == null || y == null) return false;
    32       if (ReferenceEquals(x, y)) return true;
    3332      if (x.Length != y.Length) return false;
    3433      for (var i = 0; i < x.Length; i++)
     
    3635      return true;
    3736    }
     37
    3838    public override int GetHashCode(BinaryVector obj) {
    3939      if (obj == null) throw new ArgumentNullException("obj", "BinaryVectorEqualityComparer: Cannot compute hash value of null.");
    4040      unchecked {
    4141        int hash = 17;
    42         foreach (var bit in obj) {
     42        foreach (var bit in obj)
    4343          hash = hash * 29 + (bit ? 1231 : 1237);
    44         }
    4544        return hash;
    4645      }
  • trunk/sources/HeuristicLab.Encodings.IntegerVectorEncoding/3.3/IntegerVectorEqualityComparer.cs

    r15067 r15162  
    2828  public class IntegerVectorEqualityComparer : EqualityComparer<IntegerVector> {
    2929    public override bool Equals(IntegerVector x, IntegerVector y) {
    30       if (x == null && y == null) return true;
     30      if (ReferenceEquals(x, y)) return true;
    3131      if (x == null || y == null) return false;
    32       if (ReferenceEquals(x, y)) return true;
    3332      if (x.Length != y.Length) return false;
    3433      for (var i = 0; i < x.Length; i++)
  • trunk/sources/HeuristicLab.Encodings.LinearLinkageEncoding/3.4/LinearLinkageEqualityComparer.cs

    r15067 r15162  
    2828  public class LinearLinkageEqualityComparer : EqualityComparer<LinearLinkage> {
    2929    public override bool Equals(LinearLinkage x, LinearLinkage y) {
    30       if (x == null && y == null) return true;
     30      if (ReferenceEquals(x, y)) return true;
    3131      if (x == null || y == null) return false;
    32       if (ReferenceEquals(x, y)) return true;
    3332      if (x.Length != y.Length) return false;
    3433      for (var i = 0; i < x.Length; i++)
  • trunk/sources/HeuristicLab.Encodings.PermutationEncoding/3.3/PermutationEqualityComparer.cs

    r15067 r15162  
    3030  public class PermutationEqualityComparer : EqualityComparer<Permutation> {
    3131    public override bool Equals(Permutation x, Permutation y) {
    32       if (x == null && y == null) return true;
     32      if (ReferenceEquals(x, y)) return true;
    3333      if (x == null || y == null) return false;
    34       if (ReferenceEquals(x, y)) return true;
    3534      if (x.Length != y.Length) return false;
    3635      if (x.PermutationType != y.PermutationType) return false;
  • trunk/sources/HeuristicLab.Encodings.RealVectorEncoding/3.3/RealVectorEqualityComparer.cs

    r15067 r15162  
    2828  public class RealVectorEqualityComparer : EqualityComparer<RealVector> {
    2929    public override bool Equals(RealVector x, RealVector y) {
    30       if (x == null && y == null) return true;
     30      if (ReferenceEquals(x, y)) return true;
    3131      if (x == null || y == null) return false;
    32       if (ReferenceEquals(x, y)) return true;
    3332      if (x.Length != y.Length) return false;
    3433      for (var i = 0; i < x.Length; i++)
    35         if (x[i] == y[i]) return false;
     34        if (x[i] != y[i]) return false;
    3635      return true;
    3736    }
Note: See TracChangeset for help on using the changeset viewer.