Browse Source

Use custom SequenceEqual.

LINQ version is slower and this is potentially a hot path.
pull/2744/head
Steven Kirk 7 years ago
parent
commit
c5aca41691
  1. 35
      src/Avalonia.Visuals/Media/DashStyle.cs

35
src/Avalonia.Visuals/Media/DashStyle.cs

@ -136,17 +136,7 @@ namespace Avalonia.Media
return false;
}
if (ReferenceEquals(a.Dashes, b.Dashes))
{
return true;
}
if ((a.Dashes is null && !(b.Dashes is null)) || (b.Dashes is null && !(a.Dashes is null)))
{
return false;
}
return a.Dashes.SequenceEqual(b.Dashes);
return SequenceEqual(a.Dashes, b.Dashes);
}
internal static int GetHashCode(IDashStyle style)
@ -164,5 +154,28 @@ namespace Avalonia.Media
return hashCode;
}
private static bool SequenceEqual(IReadOnlyList<double> left, IReadOnlyList<double> right)
{
if (left == right)
{
return true;
}
if (left == null || right == null || left.Count != right.Count)
{
return false;
}
for (var c = 0; c < left.Count; c++)
{
if (left[c] != right[c])
{
return false;
}
}
return true;
}
}
}

Loading…
Cancel
Save