From 4b0dfd11c0267905ea8f004833db2618bf4b2ab7 Mon Sep 17 00:00:00 2001 From: Sergio Pedri Date: Fri, 28 Feb 2020 16:30:24 +0100 Subject: [PATCH] Minor micro-optimization in DeflaterHuffman type --- src/ImageSharp/Formats/Png/Zlib/DeflaterHuffman.cs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/ImageSharp/Formats/Png/Zlib/DeflaterHuffman.cs b/src/ImageSharp/Formats/Png/Zlib/DeflaterHuffman.cs index 35bacb849..543a1fe30 100644 --- a/src/ImageSharp/Formats/Png/Zlib/DeflaterHuffman.cs +++ b/src/ImageSharp/Formats/Png/Zlib/DeflaterHuffman.cs @@ -381,14 +381,15 @@ namespace SixLabors.ImageSharp.Formats.Png.Zlib * fail as expected. We can't simply check whether the value is lower than * 15 << 12, because higher values are acceptable in the first 3 accesses. * Doing this reduces the total number of index checks from 4 down to just 1. */ - Guard.MustBeLessThanOrEqualTo((uint)(toReverse >> 12), 15, nameof(toReverse)); + int toReverseRightShiftBy12 = toReverse >> 12; + Guard.MustBeLessThanOrEqualTo((uint)toReverseRightShiftBy12, 15, nameof(toReverse)); ref byte bit4ReverseRef = ref MemoryMarshal.GetReference(Bit4Reverse); return (short)(Unsafe.Add(ref bit4ReverseRef, toReverse & 0xF) << 12 | Unsafe.Add(ref bit4ReverseRef, (toReverse >> 4) & 0xF) << 8 | Unsafe.Add(ref bit4ReverseRef, (toReverse >> 8) & 0xF) << 4 - | Unsafe.Add(ref bit4ReverseRef, toReverse >> 12)); + | Unsafe.Add(ref bit4ReverseRef, toReverseRightShiftBy12)); } ///