Browse Source

Update benchmarks

pull/2739/head
James Jackson-South 2 years ago
parent
commit
355bd04b8d
  1. 1
      src/ImageSharp/ColorProfiles/ColorConversionOptions.cs
  2. 1
      src/ImageSharp/ColorProfiles/KnownChromaticAdaptationMatrices.cs
  3. 5
      src/ImageSharp/ColorProfiles/KnownRgbWorkingSpaces.cs
  4. 14
      tests/ImageSharp.Benchmarks/Color/ColorEquality.cs
  5. 23
      tests/ImageSharp.Benchmarks/Color/ColorspaceCieXyzToCieLabConvert.cs
  6. 23
      tests/ImageSharp.Benchmarks/Color/ColorspaceCieXyzToHunterLabConvert.cs
  7. 23
      tests/ImageSharp.Benchmarks/Color/ColorspaceCieXyzToLmsConvert.cs
  8. 23
      tests/ImageSharp.Benchmarks/Color/ColorspaceCieXyzToRgbConvert.cs
  9. 23
      tests/ImageSharp.Benchmarks/Color/RgbWorkingSpaceAdapt.cs
  10. 12
      tests/ImageSharp.Benchmarks/Color/YcbCrToRgb.cs

1
src/ImageSharp/ColorProfiles/ColorConversionOptions.cs

@ -2,7 +2,6 @@
// Licensed under the Six Labors Split License.
using System.Numerics;
using SixLabors.ColorProfiles;
using SixLabors.ImageSharp.ColorProfiles.WorkingSpaces;
using SixLabors.ImageSharp.Memory;

1
src/ImageSharp/ColorProfiles/KnownChromaticAdaptationMatrices.cs

@ -18,7 +18,6 @@ namespace SixLabors.ImageSharp.ColorProfiles;
/// These matrices are typically used in conjunction with color space conversions, such as from XYZ
/// to RGB, to achieve accurate color rendition in digital imaging applications.
/// </remarks>
public static class KnownChromaticAdaptationMatrices
{
/// <summary>

5
src/ImageSharp/ColorProfiles/KnownRgbWorkingSpaces.cs

@ -1,11 +1,10 @@
// Copyright (c) Six Labors.
// Copyright (c) Six Labors.
// Licensed under the Six Labors Split License.
using SixLabors.ImageSharp.ColorProfiles;
using SixLabors.ImageSharp.ColorProfiles.Companding;
using SixLabors.ImageSharp.ColorProfiles.WorkingSpaces;
namespace SixLabors.ColorProfiles;
namespace SixLabors.ImageSharp.ColorProfiles;
/// <summary>
/// Chromaticity coordinates based on: <see href="http://www.brucelindbloom.com/index.html?WorkingSpaceInfo.html"/>

14
tests/ImageSharp.Benchmarks/Color/ColorEquality.cs

@ -1,25 +1,19 @@
// Copyright (c) Six Labors.
// Copyright (c) Six Labors.
// Licensed under the Six Labors Split License.
using BenchmarkDotNet.Attributes;
using SixLabors.ImageSharp.PixelFormats;
using SystemColor = System.Drawing.Color;
namespace SixLabors.ImageSharp.Benchmarks;
using SystemColor = System.Drawing.Color;
public class ColorEquality
{
[Benchmark(Baseline = true, Description = "System.Drawing Color Equals")]
public bool SystemDrawingColorEqual()
{
return SystemColor.FromArgb(128, 128, 128, 128).Equals(SystemColor.FromArgb(128, 128, 128, 128));
}
=> SystemColor.FromArgb(128, 128, 128, 128).Equals(SystemColor.FromArgb(128, 128, 128, 128));
[Benchmark(Description = "ImageSharp Color Equals")]
public bool ColorEqual()
{
return new Rgba32(128, 128, 128, 128).Equals(new Rgba32(128, 128, 128, 128));
}
=> new Rgba32(128, 128, 128, 128).Equals(new Rgba32(128, 128, 128, 128));
}

23
tests/ImageSharp.Benchmarks/Color/ColorspaceCieXyzToCieLabConvert.cs

@ -2,34 +2,25 @@
// Licensed under the Six Labors Split License.
using BenchmarkDotNet.Attributes;
using Colourful;
using SixLabors.ImageSharp.ColorSpaces;
using SixLabors.ImageSharp.ColorSpaces.Conversion;
using SixLabors.ImageSharp.ColorProfiles;
using Illuminants = Colourful.Illuminants;
namespace SixLabors.ImageSharp.Benchmarks.ColorSpaces;
namespace SixLabors.ImageSharp.Benchmarks.ColorProfiles;
public class ColorspaceCieXyzToCieLabConvert
{
private static readonly CieXyz CieXyz = new CieXyz(0.95047F, 1, 1.08883F);
private static readonly CieXyz CieXyz = new(0.95047F, 1, 1.08883F);
private static readonly XYZColor XYZColor = new XYZColor(0.95047, 1, 1.08883);
private static readonly XYZColor XYZColor = new(0.95047, 1, 1.08883);
private static readonly ColorSpaceConverter ColorSpaceConverter = new ColorSpaceConverter();
private static readonly ColorProfileConverter ColorProfileConverter = new();
private static readonly IColorConverter<XYZColor, LabColor> ColourfulConverter = new ConverterBuilder().FromXYZ(Illuminants.D50).ToLab(Illuminants.D50).Build();
[Benchmark(Baseline = true, Description = "Colourful Convert")]
public double ColourfulConvert()
{
return ColourfulConverter.Convert(XYZColor).L;
}
public double ColourfulConvert() => ColourfulConverter.Convert(XYZColor).L;
[Benchmark(Description = "ImageSharp Convert")]
public float ColorSpaceConvert()
{
return ColorSpaceConverter.ToCieLab(CieXyz).L;
}
public float ColorSpaceConvert() => ColorProfileConverter.Convert<CieXyz, CieLab>(CieXyz).L;
}

23
tests/ImageSharp.Benchmarks/Color/ColorspaceCieXyzToHunterLabConvert.cs

@ -2,34 +2,25 @@
// Licensed under the Six Labors Split License.
using BenchmarkDotNet.Attributes;
using Colourful;
using SixLabors.ImageSharp.ColorSpaces;
using SixLabors.ImageSharp.ColorSpaces.Conversion;
using SixLabors.ImageSharp.ColorProfiles;
using Illuminants = Colourful.Illuminants;
namespace SixLabors.ImageSharp.Benchmarks.ColorSpaces;
namespace SixLabors.ImageSharp.Benchmarks.ColorProfiles;
public class ColorspaceCieXyzToHunterLabConvert
{
private static readonly CieXyz CieXyz = new CieXyz(0.95047F, 1, 1.08883F);
private static readonly CieXyz CieXyz = new(0.95047F, 1, 1.08883F);
private static readonly XYZColor XYZColor = new XYZColor(0.95047, 1, 1.08883);
private static readonly XYZColor XYZColor = new(0.95047, 1, 1.08883);
private static readonly ColorSpaceConverter ColorSpaceConverter = new ColorSpaceConverter();
private static readonly ColorProfileConverter ColorProfileConverter = new();
private static readonly IColorConverter<XYZColor, HunterLabColor> ColourfulConverter = new ConverterBuilder().FromXYZ(Illuminants.C).ToHunterLab(Illuminants.C).Build();
[Benchmark(Baseline = true, Description = "Colourful Convert")]
public double ColourfulConvert()
{
return ColourfulConverter.Convert(XYZColor).L;
}
public double ColourfulConvert() => ColourfulConverter.Convert(XYZColor).L;
[Benchmark(Description = "ImageSharp Convert")]
public float ColorSpaceConvert()
{
return ColorSpaceConverter.ToHunterLab(CieXyz).L;
}
public float ColorSpaceConvert() => ColorProfileConverter.Convert<CieXyz, HunterLab>(CieXyz).L;
}

23
tests/ImageSharp.Benchmarks/Color/ColorspaceCieXyzToLmsConvert.cs

@ -2,33 +2,24 @@
// Licensed under the Six Labors Split License.
using BenchmarkDotNet.Attributes;
using Colourful;
using SixLabors.ImageSharp.ColorProfiles;
using SixLabors.ImageSharp.ColorSpaces;
using SixLabors.ImageSharp.ColorSpaces.Conversion;
namespace SixLabors.ImageSharp.Benchmarks.ColorSpaces;
namespace SixLabors.ImageSharp.Benchmarks.ColorProfiles;
public class ColorspaceCieXyzToLmsConvert
{
private static readonly CieXyz CieXyz = new CieXyz(0.95047F, 1, 1.08883F);
private static readonly CieXyz CieXyz = new(0.95047F, 1, 1.08883F);
private static readonly XYZColor XYZColor = new XYZColor(0.95047, 1, 1.08883);
private static readonly XYZColor XYZColor = new(0.95047, 1, 1.08883);
private static readonly ColorSpaceConverter ColorSpaceConverter = new ColorSpaceConverter();
private static readonly ColorProfileConverter ColorProfileConverter = new();
private static readonly IColorConverter<XYZColor, LMSColor> ColourfulConverter = new ConverterBuilder().FromXYZ().ToLMS().Build();
[Benchmark(Baseline = true, Description = "Colourful Convert")]
public double ColourfulConvert()
{
return ColourfulConverter.Convert(XYZColor).L;
}
public double ColourfulConvert() => ColourfulConverter.Convert(XYZColor).L;
[Benchmark(Description = "ImageSharp Convert")]
public float ColorSpaceConvert()
{
return ColorSpaceConverter.ToLms(CieXyz).L;
}
public float ColorSpaceConvert() => ColorProfileConverter.Convert<CieXyz, Lms>(CieXyz).L;
}

23
tests/ImageSharp.Benchmarks/Color/ColorspaceCieXyzToRgbConvert.cs

@ -2,33 +2,24 @@
// Licensed under the Six Labors Split License.
using BenchmarkDotNet.Attributes;
using Colourful;
using SixLabors.ImageSharp.ColorProfiles;
using SixLabors.ImageSharp.ColorSpaces;
using SixLabors.ImageSharp.ColorSpaces.Conversion;
namespace SixLabors.ImageSharp.Benchmarks.ColorSpaces;
namespace SixLabors.ImageSharp.Benchmarks.ColorProfiles;
public class ColorspaceCieXyzToRgbConvert
{
private static readonly CieXyz CieXyz = new CieXyz(0.95047F, 1, 1.08883F);
private static readonly CieXyz CieXyz = new(0.95047F, 1, 1.08883F);
private static readonly XYZColor XYZColor = new XYZColor(0.95047, 1, 1.08883);
private static readonly XYZColor XYZColor = new(0.95047, 1, 1.08883);
private static readonly ColorSpaceConverter ColorSpaceConverter = new ColorSpaceConverter();
private static readonly ColorProfileConverter ColorProfileConverter = new();
private static readonly IColorConverter<XYZColor, RGBColor> ColourfulConverter = new ConverterBuilder().FromXYZ(RGBWorkingSpaces.sRGB.WhitePoint).ToRGB(RGBWorkingSpaces.sRGB).Build();
[Benchmark(Baseline = true, Description = "Colourful Convert")]
public double ColourfulConvert()
{
return ColourfulConverter.Convert(XYZColor).R;
}
public double ColourfulConvert() => ColourfulConverter.Convert(XYZColor).R;
[Benchmark(Description = "ImageSharp Convert")]
public float ColorSpaceConvert()
{
return ColorSpaceConverter.ToRgb(CieXyz).R;
}
public float ColorSpaceConvert() => ColorProfileConverter.Convert<CieXyz, Rgb>(CieXyz).R;
}

23
tests/ImageSharp.Benchmarks/Color/RgbWorkingSpaceAdapt.cs

@ -2,33 +2,24 @@
// Licensed under the Six Labors Split License.
using BenchmarkDotNet.Attributes;
using Colourful;
using SixLabors.ImageSharp.ColorProfiles;
using SixLabors.ImageSharp.ColorSpaces;
using SixLabors.ImageSharp.ColorSpaces.Conversion;
namespace SixLabors.ImageSharp.Benchmarks.ColorSpaces;
namespace SixLabors.ImageSharp.Benchmarks.ColorProfiles;
public class RgbWorkingSpaceAdapt
{
private static readonly Rgb Rgb = new Rgb(0.206162F, 0.260277F, 0.746717F, RgbWorkingSpaces.WideGamutRgb);
private static readonly Rgb Rgb = new(0.206162F, 0.260277F, 0.746717F);
private static readonly RGBColor RGBColor = new RGBColor(0.206162, 0.260277, 0.746717);
private static readonly RGBColor RGBColor = new(0.206162, 0.260277, 0.746717);
private static readonly ColorSpaceConverter ColorSpaceConverter = new ColorSpaceConverter(new ColorSpaceConverterOptions { TargetRgbWorkingSpace = RgbWorkingSpaces.SRgb });
private static readonly ColorProfileConverter ColorProfileConverter = new(new ColorConversionOptions { RgbWorkingSpace = KnownRgbWorkingSpaces.WideGamutRgb, TargetRgbWorkingSpace = KnownRgbWorkingSpaces.SRgb });
private static readonly IColorConverter<RGBColor, RGBColor> ColourfulConverter = new ConverterBuilder().FromRGB(RGBWorkingSpaces.WideGamutRGB).ToRGB(RGBWorkingSpaces.sRGB).Build();
[Benchmark(Baseline = true, Description = "Colourful Adapt")]
public RGBColor ColourfulConvert()
{
return ColourfulConverter.Convert(RGBColor);
}
public RGBColor ColourfulConvert() => ColourfulConverter.Convert(RGBColor);
[Benchmark(Description = "ImageSharp Adapt")]
public Rgb ColorSpaceConvert()
{
return ColorSpaceConverter.Adapt(Rgb);
}
public Rgb ColorSpaceConvert() => ColorProfileConverter.Convert<Rgb, Rgb>(Rgb);
}

12
tests/ImageSharp.Benchmarks/Color/YcbCrToRgb.cs

@ -11,9 +11,9 @@ public class YcbCrToRgb
[Benchmark(Baseline = true, Description = "Floating Point Conversion")]
public Vector3 YcbCrToRgba()
{
int y = 255;
int cb = 128;
int cr = 128;
const int y = 255;
const int cb = 128;
const int cr = 128;
int ccb = cb - 128;
int ccr = cr - 128;
@ -28,9 +28,9 @@ public class YcbCrToRgb
[Benchmark(Description = "Scaled Integer Conversion")]
public Vector3 YcbCrToRgbaScaled()
{
int y = 255;
int cb = 128;
int cr = 128;
const int y = 255;
const int cb = 128;
const int cr = 128;
int ccb = cb - 128;
int ccr = cr - 128;

Loading…
Cancel
Save