From 5874c4c9fdbb341b66afcc6c7f326695be564a37 Mon Sep 17 00:00:00 2001 From: winscripter <142818255+winscripter@users.noreply.github.com> Date: Wed, 2 Sep 2026 19:47:46 +0400 Subject: [PATCH] Optimize JxlNoiseHistogram - Use double for Clamp - Avoid bounds check in while loop --- .../Jxl/Processing/Encoder/Noise/JxlNoiseHistogram.cs | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/ImageSharp/Formats/Jxl/Processing/Encoder/Noise/JxlNoiseHistogram.cs b/src/ImageSharp/Formats/Jxl/Processing/Encoder/Noise/JxlNoiseHistogram.cs index 5cacaa5d02..396021a55d 100644 --- a/src/ImageSharp/Formats/Jxl/Processing/Encoder/Noise/JxlNoiseHistogram.cs +++ b/src/ImageSharp/Formats/Jxl/Processing/Encoder/Noise/JxlNoiseHistogram.cs @@ -1,7 +1,6 @@ // Copyright (c) Six Labors. // Licensed under the Six Labors Split License. -using System.Numerics; using System.Numerics.Tensors; using System.Runtime.CompilerServices; @@ -66,7 +65,7 @@ internal sealed class JxlNoiseHistogram int next = i + 1; - while (next < Bins && this.bins[next] == 0) + while ((uint)next < this.bins.Length && this.bins[next] == 0) { next++; } @@ -78,10 +77,8 @@ internal sealed class JxlNoiseHistogram } [MethodImpl(MethodImplOptions.AggressiveInlining)] - private static T ClampX(T x) - where T : unmanaged, INumber - => T.Clamp(x, T.Zero, T.CreateSaturating(Bins - 1)); + private static double ClampX(double x) => Math.Clamp(x, 0, Bins - 1); [MethodImpl(MethodImplOptions.AggressiveInlining)] - private static int Index(float x) => ClampX((int)x); + private static int Index(float x) => (int)ClampX((int)x); }