From 590dd3b8e64efd3df35c0a046d9d6afafc9e2a2d Mon Sep 17 00:00:00 2001 From: Jason Nelson Date: Mon, 20 Aug 2018 10:27:18 -0700 Subject: [PATCH 1/3] Optimize Equals & GetHashCode methods within PixelFormats --- src/ImageSharp/PixelFormats/Alpha8.cs | 5 +---- src/ImageSharp/PixelFormats/Argb32.cs | 7 +------ src/ImageSharp/PixelFormats/Bgr565.cs | 5 +---- src/ImageSharp/PixelFormats/Bgra32.cs | 10 ++-------- src/ImageSharp/PixelFormats/Bgra4444.cs | 5 +---- src/ImageSharp/PixelFormats/Bgra5551.cs | 5 +---- src/ImageSharp/PixelFormats/Byte4.cs | 5 +---- src/ImageSharp/PixelFormats/HalfSingle.cs | 5 +---- src/ImageSharp/PixelFormats/HalfVector2.cs | 5 +---- src/ImageSharp/PixelFormats/HalfVector4.cs | 5 +---- src/ImageSharp/PixelFormats/NormalizedByte2.cs | 5 +---- src/ImageSharp/PixelFormats/NormalizedByte4.cs | 5 +---- src/ImageSharp/PixelFormats/Rgba32.cs | 7 +------ src/ImageSharp/PixelFormats/Rgba64.cs | 5 +---- src/ImageSharp/PixelFormats/Short2.cs | 5 +---- src/ImageSharp/PixelFormats/Short4.cs | 5 +---- 16 files changed, 17 insertions(+), 72 deletions(-) diff --git a/src/ImageSharp/PixelFormats/Alpha8.cs b/src/ImageSharp/PixelFormats/Alpha8.cs index 0b16fed0a5..a8d97d31a2 100644 --- a/src/ImageSharp/PixelFormats/Alpha8.cs +++ b/src/ImageSharp/PixelFormats/Alpha8.cs @@ -208,10 +208,7 @@ public override string ToString() /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public override int GetHashCode() - { - return this.PackedValue.GetHashCode(); - } + public override int GetHashCode() => this.PackedValue.GetHashCode(); /// /// Packs a into a byte. diff --git a/src/ImageSharp/PixelFormats/Argb32.cs b/src/ImageSharp/PixelFormats/Argb32.cs index ccb17a2a5e..51d3964ef8 100644 --- a/src/ImageSharp/PixelFormats/Argb32.cs +++ b/src/ImageSharp/PixelFormats/Argb32.cs @@ -362,12 +362,7 @@ public override string ToString() /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public override int GetHashCode() - { - int hash = HashHelpers.Combine(this.R.GetHashCode(), this.G.GetHashCode()); - hash = HashHelpers.Combine(hash, this.B.GetHashCode()); - return HashHelpers.Combine(hash, this.A.GetHashCode()); - } + public override int GetHashCode() => this.Argb.GetHashCode(); /// /// Gets the representation without normalizing to [0, 1] diff --git a/src/ImageSharp/PixelFormats/Bgr565.cs b/src/ImageSharp/PixelFormats/Bgr565.cs index f9a0ce9dce..570b975dba 100644 --- a/src/ImageSharp/PixelFormats/Bgr565.cs +++ b/src/ImageSharp/PixelFormats/Bgr565.cs @@ -224,10 +224,7 @@ public override string ToString() /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public override int GetHashCode() - { - return this.PackedValue.GetHashCode(); - } + public override int GetHashCode() => this.PackedValue.GetHashCode(); /// /// Packs the components into a . diff --git a/src/ImageSharp/PixelFormats/Bgra32.cs b/src/ImageSharp/PixelFormats/Bgra32.cs index 14b2da07c9..233df2f29e 100644 --- a/src/ImageSharp/PixelFormats/Bgra32.cs +++ b/src/ImageSharp/PixelFormats/Bgra32.cs @@ -1,7 +1,6 @@ // Copyright (c) Six Labors and contributors. // Licensed under the Apache License, Version 2.0. -using System; using System.Numerics; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; @@ -105,19 +104,14 @@ public uint PackedValue /// public bool Equals(Bgra32 other) { - return this.R == other.R && this.G == other.G && this.B == other.B && this.A == other.A; + return this.Bgra == other.Bgra; } /// public override bool Equals(object obj) => obj is Bgra32 other && this.Equals(other); /// - public override int GetHashCode() - { - int hash = HashHelpers.Combine(this.R.GetHashCode(), this.G.GetHashCode()); - hash = HashHelpers.Combine(hash, this.B.GetHashCode()); - return HashHelpers.Combine(hash, this.A.GetHashCode()); - } + public override int GetHashCode() => this.Bgra.GetHashCode(); /// /// Gets the representation without normalizing to [0, 1] diff --git a/src/ImageSharp/PixelFormats/Bgra4444.cs b/src/ImageSharp/PixelFormats/Bgra4444.cs index b006aa5d2f..90f967f898 100644 --- a/src/ImageSharp/PixelFormats/Bgra4444.cs +++ b/src/ImageSharp/PixelFormats/Bgra4444.cs @@ -215,10 +215,7 @@ public override string ToString() /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public override int GetHashCode() - { - return this.PackedValue.GetHashCode(); - } + public override int GetHashCode() => this.PackedValue.GetHashCode(); /// /// Packs the components into a . diff --git a/src/ImageSharp/PixelFormats/Bgra5551.cs b/src/ImageSharp/PixelFormats/Bgra5551.cs index 90a6251428..3a18c03e83 100644 --- a/src/ImageSharp/PixelFormats/Bgra5551.cs +++ b/src/ImageSharp/PixelFormats/Bgra5551.cs @@ -221,10 +221,7 @@ public override string ToString() /// /// The hash code for the packed vector. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public override int GetHashCode() - { - return this.PackedValue.GetHashCode(); - } + public override int GetHashCode() => this.PackedValue.GetHashCode(); /// /// Packs the components into a . diff --git a/src/ImageSharp/PixelFormats/Byte4.cs b/src/ImageSharp/PixelFormats/Byte4.cs index 4269557270..bb1b350f07 100644 --- a/src/ImageSharp/PixelFormats/Byte4.cs +++ b/src/ImageSharp/PixelFormats/Byte4.cs @@ -210,10 +210,7 @@ public bool Equals(Byte4 other) /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public override int GetHashCode() - { - return this.PackedValue.GetHashCode(); - } + public override int GetHashCode() => this.PackedValue.GetHashCode(); /// /// Returns a string representation of the current instance. diff --git a/src/ImageSharp/PixelFormats/HalfSingle.cs b/src/ImageSharp/PixelFormats/HalfSingle.cs index 54c615f9b4..09b4636492 100644 --- a/src/ImageSharp/PixelFormats/HalfSingle.cs +++ b/src/ImageSharp/PixelFormats/HalfSingle.cs @@ -229,10 +229,7 @@ public override string ToString() /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public override int GetHashCode() - { - return this.PackedValue.GetHashCode(); - } + public override int GetHashCode() => this.PackedValue.GetHashCode(); [MethodImpl(MethodImplOptions.AggressiveInlining)] private Vector4 ToByteScaledVector4() diff --git a/src/ImageSharp/PixelFormats/HalfVector2.cs b/src/ImageSharp/PixelFormats/HalfVector2.cs index 4a135a77cb..befa49736c 100644 --- a/src/ImageSharp/PixelFormats/HalfVector2.cs +++ b/src/ImageSharp/PixelFormats/HalfVector2.cs @@ -231,10 +231,7 @@ public override string ToString() /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public override int GetHashCode() - { - return this.PackedValue.GetHashCode(); - } + public override int GetHashCode() => this.PackedValue.GetHashCode(); /// public override bool Equals(object obj) diff --git a/src/ImageSharp/PixelFormats/HalfVector4.cs b/src/ImageSharp/PixelFormats/HalfVector4.cs index 62a25bc2b8..885e022921 100644 --- a/src/ImageSharp/PixelFormats/HalfVector4.cs +++ b/src/ImageSharp/PixelFormats/HalfVector4.cs @@ -224,10 +224,7 @@ public override string ToString() /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public override int GetHashCode() - { - return this.PackedValue.GetHashCode(); - } + public override int GetHashCode() => this.PackedValue.GetHashCode(); /// public override bool Equals(object obj) diff --git a/src/ImageSharp/PixelFormats/NormalizedByte2.cs b/src/ImageSharp/PixelFormats/NormalizedByte2.cs index 75a9075942..dc220aef6b 100644 --- a/src/ImageSharp/PixelFormats/NormalizedByte2.cs +++ b/src/ImageSharp/PixelFormats/NormalizedByte2.cs @@ -257,10 +257,7 @@ public bool Equals(NormalizedByte2 other) /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public override int GetHashCode() - { - return this.PackedValue.GetHashCode(); - } + public override int GetHashCode() => this.PackedValue.GetHashCode();; /// public override string ToString() diff --git a/src/ImageSharp/PixelFormats/NormalizedByte4.cs b/src/ImageSharp/PixelFormats/NormalizedByte4.cs index fc3845eb28..293d536e53 100644 --- a/src/ImageSharp/PixelFormats/NormalizedByte4.cs +++ b/src/ImageSharp/PixelFormats/NormalizedByte4.cs @@ -250,10 +250,7 @@ public bool Equals(NormalizedByte4 other) /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public override int GetHashCode() - { - return this.PackedValue.GetHashCode(); - } + public override int GetHashCode() => this.PackedValue.GetHashCode(); /// public override string ToString() diff --git a/src/ImageSharp/PixelFormats/Rgba32.cs b/src/ImageSharp/PixelFormats/Rgba32.cs index 79794ee462..066f80ecde 100644 --- a/src/ImageSharp/PixelFormats/Rgba32.cs +++ b/src/ImageSharp/PixelFormats/Rgba32.cs @@ -437,12 +437,7 @@ public override string ToString() /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public override int GetHashCode() - { - int hash = HashHelpers.Combine(this.R.GetHashCode(), this.G.GetHashCode()); - hash = HashHelpers.Combine(hash, this.B.GetHashCode()); - return HashHelpers.Combine(hash, this.A.GetHashCode()); - } + public override int GetHashCode() => Rgba.GetHashCode(); /// /// Gets the representation without normalizing to [0, 1] diff --git a/src/ImageSharp/PixelFormats/Rgba64.cs b/src/ImageSharp/PixelFormats/Rgba64.cs index a66485ba40..8e6be1e8c4 100644 --- a/src/ImageSharp/PixelFormats/Rgba64.cs +++ b/src/ImageSharp/PixelFormats/Rgba64.cs @@ -295,9 +295,6 @@ public override string ToString() /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public override int GetHashCode() - { - return this.PackedValue.GetHashCode(); - } + public override int GetHashCode() => this.PackedValue.GetHashCode(); } } \ No newline at end of file diff --git a/src/ImageSharp/PixelFormats/Short2.cs b/src/ImageSharp/PixelFormats/Short2.cs index c298c5a486..9fc7618b91 100644 --- a/src/ImageSharp/PixelFormats/Short2.cs +++ b/src/ImageSharp/PixelFormats/Short2.cs @@ -249,10 +249,7 @@ public bool Equals(Short2 other) /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public override int GetHashCode() - { - return this.PackedValue.GetHashCode(); - } + public override int GetHashCode() => this.PackedValue.GetHashCode(); /// public override string ToString() diff --git a/src/ImageSharp/PixelFormats/Short4.cs b/src/ImageSharp/PixelFormats/Short4.cs index 5683ffceea..641f154f94 100644 --- a/src/ImageSharp/PixelFormats/Short4.cs +++ b/src/ImageSharp/PixelFormats/Short4.cs @@ -247,10 +247,7 @@ public bool Equals(Short4 other) /// /// Hash code for the instance. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public override int GetHashCode() - { - return this.PackedValue.GetHashCode(); - } + public override int GetHashCode() => this.PackedValue.GetHashCode(); /// /// Returns a string representation of the current instance. From 67e1445787f65e5ff4e9d8db2415291fe02dd2b5 Mon Sep 17 00:00:00 2001 From: Jason Nelson Date: Mon, 20 Aug 2018 12:05:27 -0700 Subject: [PATCH 2/3] Remove trailing semicolon --- src/ImageSharp/PixelFormats/NormalizedByte2.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ImageSharp/PixelFormats/NormalizedByte2.cs b/src/ImageSharp/PixelFormats/NormalizedByte2.cs index dc220aef6b..8592fdd6a7 100644 --- a/src/ImageSharp/PixelFormats/NormalizedByte2.cs +++ b/src/ImageSharp/PixelFormats/NormalizedByte2.cs @@ -257,7 +257,7 @@ public bool Equals(NormalizedByte2 other) /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public override int GetHashCode() => this.PackedValue.GetHashCode();; + public override int GetHashCode() => this.PackedValue.GetHashCode(); /// public override string ToString() From 760dfcc937008e4845d135945a766f24e9094586 Mon Sep 17 00:00:00 2001 From: Jason Nelson Date: Mon, 20 Aug 2018 14:18:10 -0700 Subject: [PATCH 3/3] =?UTF-8?q?=F0=9F=91=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/ImageSharp/PixelFormats/Rgba32.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ImageSharp/PixelFormats/Rgba32.cs b/src/ImageSharp/PixelFormats/Rgba32.cs index 066f80ecde..cf66538c52 100644 --- a/src/ImageSharp/PixelFormats/Rgba32.cs +++ b/src/ImageSharp/PixelFormats/Rgba32.cs @@ -437,7 +437,7 @@ public override string ToString() /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public override int GetHashCode() => Rgba.GetHashCode(); + public override int GetHashCode() => this.Rgba.GetHashCode(); /// /// Gets the representation without normalizing to [0, 1]