diff --git a/src/ImageProcessorCore/PackedVector/Bgra32.cs b/src/ImageProcessorCore/PackedVector/Bgra32.cs index eed4d5c02f..3372cb2833 100644 --- a/src/ImageProcessorCore/PackedVector/Bgra32.cs +++ b/src/ImageProcessorCore/PackedVector/Bgra32.cs @@ -270,8 +270,16 @@ namespace ImageProcessorCore [MethodImpl(MethodImplOptions.AggressiveInlining)] private static byte Clamp(float value) { - value = (value > 255) ? 255 : value; - value = (value < 0) ? 0 : value; + if (value > 255) + { + return 255; + } + + if (value < 0) + { + return 0; + } + return (byte)value; } @@ -285,8 +293,16 @@ namespace ImageProcessorCore [MethodImpl(MethodImplOptions.AggressiveInlining)] private static byte Clamp(double value) { - value = (value > 255) ? 255 : value; - value = (value < 0) ? 0 : value; + if (value > 255) + { + return 255; + } + + if (value < 0) + { + return 0; + } + return (byte)value; } diff --git a/tests/ImageProcessorCore.Benchmarks/Color/Clamp.cs b/tests/ImageProcessorCore.Benchmarks/Color/Clamp.cs index 93b6cd94e6..7af7010ab8 100644 --- a/tests/ImageProcessorCore.Benchmarks/Color/Clamp.cs +++ b/tests/ImageProcessorCore.Benchmarks/Color/Clamp.cs @@ -22,5 +22,22 @@ namespace ImageProcessorCore.Benchmarks.Color return (byte)value; } + [Benchmark(Description = "No Maths Clamp No Ternary")] + public byte ClampNoMathsNoTernary() + { + double value = 256; + + if(value > 255) + { + return 255; + } + + if (value < 0) + { + return 0; + } + + return (byte)value; + } } } diff --git a/tests/ImageProcessorCore.Benchmarks/Samplers/Resize.cs b/tests/ImageProcessorCore.Benchmarks/Samplers/Resize.cs index 65ed841f00..e5eb412f29 100644 --- a/tests/ImageProcessorCore.Benchmarks/Samplers/Resize.cs +++ b/tests/ImageProcessorCore.Benchmarks/Samplers/Resize.cs @@ -21,7 +21,7 @@ graphics.InterpolationMode = InterpolationMode.HighQualityBicubic; graphics.PixelOffsetMode = PixelOffsetMode.HighQuality; graphics.CompositingQuality = CompositingQuality.HighQuality; - graphics.DrawImage(source, 0, 0, 100, 100); + graphics.DrawImage(source, 0, 0, 400, 400); } return destination.Size;