Skip to content

Commit 355bd04

Browse files
Update benchmarks
1 parent c16582b commit 355bd04

10 files changed

+47
-101
lines changed

src/ImageSharp/ColorProfiles/ColorConversionOptions.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
// Licensed under the Six Labors Split License.
33

44
using System.Numerics;
5-
using SixLabors.ColorProfiles;
65
using SixLabors.ImageSharp.ColorProfiles.WorkingSpaces;
76
using SixLabors.ImageSharp.Memory;
87

src/ImageSharp/ColorProfiles/KnownChromaticAdaptationMatrices.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ namespace SixLabors.ImageSharp.ColorProfiles;
1818
/// These matrices are typically used in conjunction with color space conversions, such as from XYZ
1919
/// to RGB, to achieve accurate color rendition in digital imaging applications.
2020
/// </remarks>
21-
2221
public static class KnownChromaticAdaptationMatrices
2322
{
2423
/// <summary>

src/ImageSharp/ColorProfiles/KnownRgbWorkingSpaces.cs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
1-
// Copyright (c) Six Labors.
1+
// Copyright (c) Six Labors.
22
// Licensed under the Six Labors Split License.
33

4-
using SixLabors.ImageSharp.ColorProfiles;
54
using SixLabors.ImageSharp.ColorProfiles.Companding;
65
using SixLabors.ImageSharp.ColorProfiles.WorkingSpaces;
76

8-
namespace SixLabors.ColorProfiles;
7+
namespace SixLabors.ImageSharp.ColorProfiles;
98

109
/// <summary>
1110
/// Chromaticity coordinates based on: <see href="http://www.brucelindbloom.com/index.html?WorkingSpaceInfo.html"/>
Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,19 @@
1-
// Copyright (c) Six Labors.
1+
// Copyright (c) Six Labors.
22
// Licensed under the Six Labors Split License.
33

44
using BenchmarkDotNet.Attributes;
5-
65
using SixLabors.ImageSharp.PixelFormats;
6+
using SystemColor = System.Drawing.Color;
77

88
namespace SixLabors.ImageSharp.Benchmarks;
99

10-
using SystemColor = System.Drawing.Color;
11-
1210
public class ColorEquality
1311
{
1412
[Benchmark(Baseline = true, Description = "System.Drawing Color Equals")]
1513
public bool SystemDrawingColorEqual()
16-
{
17-
return SystemColor.FromArgb(128, 128, 128, 128).Equals(SystemColor.FromArgb(128, 128, 128, 128));
18-
}
14+
=> SystemColor.FromArgb(128, 128, 128, 128).Equals(SystemColor.FromArgb(128, 128, 128, 128));
1915

2016
[Benchmark(Description = "ImageSharp Color Equals")]
2117
public bool ColorEqual()
22-
{
23-
return new Rgba32(128, 128, 128, 128).Equals(new Rgba32(128, 128, 128, 128));
24-
}
18+
=> new Rgba32(128, 128, 128, 128).Equals(new Rgba32(128, 128, 128, 128));
2519
}

tests/ImageSharp.Benchmarks/Color/ColorspaceCieXyzToCieLabConvert.cs

Lines changed: 7 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,34 +2,25 @@
22
// Licensed under the Six Labors Split License.
33

44
using BenchmarkDotNet.Attributes;
5-
65
using Colourful;
7-
8-
using SixLabors.ImageSharp.ColorSpaces;
9-
using SixLabors.ImageSharp.ColorSpaces.Conversion;
6+
using SixLabors.ImageSharp.ColorProfiles;
107
using Illuminants = Colourful.Illuminants;
118

12-
namespace SixLabors.ImageSharp.Benchmarks.ColorSpaces;
9+
namespace SixLabors.ImageSharp.Benchmarks.ColorProfiles;
1310

1411
public class ColorspaceCieXyzToCieLabConvert
1512
{
16-
private static readonly CieXyz CieXyz = new CieXyz(0.95047F, 1, 1.08883F);
13+
private static readonly CieXyz CieXyz = new(0.95047F, 1, 1.08883F);
1714

18-
private static readonly XYZColor XYZColor = new XYZColor(0.95047, 1, 1.08883);
15+
private static readonly XYZColor XYZColor = new(0.95047, 1, 1.08883);
1916

20-
private static readonly ColorSpaceConverter ColorSpaceConverter = new ColorSpaceConverter();
17+
private static readonly ColorProfileConverter ColorProfileConverter = new();
2118

2219
private static readonly IColorConverter<XYZColor, LabColor> ColourfulConverter = new ConverterBuilder().FromXYZ(Illuminants.D50).ToLab(Illuminants.D50).Build();
2320

2421
[Benchmark(Baseline = true, Description = "Colourful Convert")]
25-
public double ColourfulConvert()
26-
{
27-
return ColourfulConverter.Convert(XYZColor).L;
28-
}
22+
public double ColourfulConvert() => ColourfulConverter.Convert(XYZColor).L;
2923

3024
[Benchmark(Description = "ImageSharp Convert")]
31-
public float ColorSpaceConvert()
32-
{
33-
return ColorSpaceConverter.ToCieLab(CieXyz).L;
34-
}
25+
public float ColorSpaceConvert() => ColorProfileConverter.Convert<CieXyz, CieLab>(CieXyz).L;
3526
}

tests/ImageSharp.Benchmarks/Color/ColorspaceCieXyzToHunterLabConvert.cs

Lines changed: 7 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,34 +2,25 @@
22
// Licensed under the Six Labors Split License.
33

44
using BenchmarkDotNet.Attributes;
5-
65
using Colourful;
7-
8-
using SixLabors.ImageSharp.ColorSpaces;
9-
using SixLabors.ImageSharp.ColorSpaces.Conversion;
6+
using SixLabors.ImageSharp.ColorProfiles;
107
using Illuminants = Colourful.Illuminants;
118

12-
namespace SixLabors.ImageSharp.Benchmarks.ColorSpaces;
9+
namespace SixLabors.ImageSharp.Benchmarks.ColorProfiles;
1310

1411
public class ColorspaceCieXyzToHunterLabConvert
1512
{
16-
private static readonly CieXyz CieXyz = new CieXyz(0.95047F, 1, 1.08883F);
13+
private static readonly CieXyz CieXyz = new(0.95047F, 1, 1.08883F);
1714

18-
private static readonly XYZColor XYZColor = new XYZColor(0.95047, 1, 1.08883);
15+
private static readonly XYZColor XYZColor = new(0.95047, 1, 1.08883);
1916

20-
private static readonly ColorSpaceConverter ColorSpaceConverter = new ColorSpaceConverter();
17+
private static readonly ColorProfileConverter ColorProfileConverter = new();
2118

2219
private static readonly IColorConverter<XYZColor, HunterLabColor> ColourfulConverter = new ConverterBuilder().FromXYZ(Illuminants.C).ToHunterLab(Illuminants.C).Build();
2320

2421
[Benchmark(Baseline = true, Description = "Colourful Convert")]
25-
public double ColourfulConvert()
26-
{
27-
return ColourfulConverter.Convert(XYZColor).L;
28-
}
22+
public double ColourfulConvert() => ColourfulConverter.Convert(XYZColor).L;
2923

3024
[Benchmark(Description = "ImageSharp Convert")]
31-
public float ColorSpaceConvert()
32-
{
33-
return ColorSpaceConverter.ToHunterLab(CieXyz).L;
34-
}
25+
public float ColorSpaceConvert() => ColorProfileConverter.Convert<CieXyz, HunterLab>(CieXyz).L;
3526
}

tests/ImageSharp.Benchmarks/Color/ColorspaceCieXyzToLmsConvert.cs

Lines changed: 7 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,33 +2,24 @@
22
// Licensed under the Six Labors Split License.
33

44
using BenchmarkDotNet.Attributes;
5-
65
using Colourful;
6+
using SixLabors.ImageSharp.ColorProfiles;
77

8-
using SixLabors.ImageSharp.ColorSpaces;
9-
using SixLabors.ImageSharp.ColorSpaces.Conversion;
10-
11-
namespace SixLabors.ImageSharp.Benchmarks.ColorSpaces;
8+
namespace SixLabors.ImageSharp.Benchmarks.ColorProfiles;
129

1310
public class ColorspaceCieXyzToLmsConvert
1411
{
15-
private static readonly CieXyz CieXyz = new CieXyz(0.95047F, 1, 1.08883F);
12+
private static readonly CieXyz CieXyz = new(0.95047F, 1, 1.08883F);
1613

17-
private static readonly XYZColor XYZColor = new XYZColor(0.95047, 1, 1.08883);
14+
private static readonly XYZColor XYZColor = new(0.95047, 1, 1.08883);
1815

19-
private static readonly ColorSpaceConverter ColorSpaceConverter = new ColorSpaceConverter();
16+
private static readonly ColorProfileConverter ColorProfileConverter = new();
2017

2118
private static readonly IColorConverter<XYZColor, LMSColor> ColourfulConverter = new ConverterBuilder().FromXYZ().ToLMS().Build();
2219

2320
[Benchmark(Baseline = true, Description = "Colourful Convert")]
24-
public double ColourfulConvert()
25-
{
26-
return ColourfulConverter.Convert(XYZColor).L;
27-
}
21+
public double ColourfulConvert() => ColourfulConverter.Convert(XYZColor).L;
2822

2923
[Benchmark(Description = "ImageSharp Convert")]
30-
public float ColorSpaceConvert()
31-
{
32-
return ColorSpaceConverter.ToLms(CieXyz).L;
33-
}
24+
public float ColorSpaceConvert() => ColorProfileConverter.Convert<CieXyz, Lms>(CieXyz).L;
3425
}

tests/ImageSharp.Benchmarks/Color/ColorspaceCieXyzToRgbConvert.cs

Lines changed: 7 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,33 +2,24 @@
22
// Licensed under the Six Labors Split License.
33

44
using BenchmarkDotNet.Attributes;
5-
65
using Colourful;
6+
using SixLabors.ImageSharp.ColorProfiles;
77

8-
using SixLabors.ImageSharp.ColorSpaces;
9-
using SixLabors.ImageSharp.ColorSpaces.Conversion;
10-
11-
namespace SixLabors.ImageSharp.Benchmarks.ColorSpaces;
8+
namespace SixLabors.ImageSharp.Benchmarks.ColorProfiles;
129

1310
public class ColorspaceCieXyzToRgbConvert
1411
{
15-
private static readonly CieXyz CieXyz = new CieXyz(0.95047F, 1, 1.08883F);
12+
private static readonly CieXyz CieXyz = new(0.95047F, 1, 1.08883F);
1613

17-
private static readonly XYZColor XYZColor = new XYZColor(0.95047, 1, 1.08883);
14+
private static readonly XYZColor XYZColor = new(0.95047, 1, 1.08883);
1815

19-
private static readonly ColorSpaceConverter ColorSpaceConverter = new ColorSpaceConverter();
16+
private static readonly ColorProfileConverter ColorProfileConverter = new();
2017

2118
private static readonly IColorConverter<XYZColor, RGBColor> ColourfulConverter = new ConverterBuilder().FromXYZ(RGBWorkingSpaces.sRGB.WhitePoint).ToRGB(RGBWorkingSpaces.sRGB).Build();
2219

2320
[Benchmark(Baseline = true, Description = "Colourful Convert")]
24-
public double ColourfulConvert()
25-
{
26-
return ColourfulConverter.Convert(XYZColor).R;
27-
}
21+
public double ColourfulConvert() => ColourfulConverter.Convert(XYZColor).R;
2822

2923
[Benchmark(Description = "ImageSharp Convert")]
30-
public float ColorSpaceConvert()
31-
{
32-
return ColorSpaceConverter.ToRgb(CieXyz).R;
33-
}
24+
public float ColorSpaceConvert() => ColorProfileConverter.Convert<CieXyz, Rgb>(CieXyz).R;
3425
}

tests/ImageSharp.Benchmarks/Color/RgbWorkingSpaceAdapt.cs

Lines changed: 7 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,33 +2,24 @@
22
// Licensed under the Six Labors Split License.
33

44
using BenchmarkDotNet.Attributes;
5-
65
using Colourful;
6+
using SixLabors.ImageSharp.ColorProfiles;
77

8-
using SixLabors.ImageSharp.ColorSpaces;
9-
using SixLabors.ImageSharp.ColorSpaces.Conversion;
10-
11-
namespace SixLabors.ImageSharp.Benchmarks.ColorSpaces;
8+
namespace SixLabors.ImageSharp.Benchmarks.ColorProfiles;
129

1310
public class RgbWorkingSpaceAdapt
1411
{
15-
private static readonly Rgb Rgb = new Rgb(0.206162F, 0.260277F, 0.746717F, RgbWorkingSpaces.WideGamutRgb);
12+
private static readonly Rgb Rgb = new(0.206162F, 0.260277F, 0.746717F);
1613

17-
private static readonly RGBColor RGBColor = new RGBColor(0.206162, 0.260277, 0.746717);
14+
private static readonly RGBColor RGBColor = new(0.206162, 0.260277, 0.746717);
1815

19-
private static readonly ColorSpaceConverter ColorSpaceConverter = new ColorSpaceConverter(new ColorSpaceConverterOptions { TargetRgbWorkingSpace = RgbWorkingSpaces.SRgb });
16+
private static readonly ColorProfileConverter ColorProfileConverter = new(new ColorConversionOptions { RgbWorkingSpace = KnownRgbWorkingSpaces.WideGamutRgb, TargetRgbWorkingSpace = KnownRgbWorkingSpaces.SRgb });
2017

2118
private static readonly IColorConverter<RGBColor, RGBColor> ColourfulConverter = new ConverterBuilder().FromRGB(RGBWorkingSpaces.WideGamutRGB).ToRGB(RGBWorkingSpaces.sRGB).Build();
2219

2320
[Benchmark(Baseline = true, Description = "Colourful Adapt")]
24-
public RGBColor ColourfulConvert()
25-
{
26-
return ColourfulConverter.Convert(RGBColor);
27-
}
21+
public RGBColor ColourfulConvert() => ColourfulConverter.Convert(RGBColor);
2822

2923
[Benchmark(Description = "ImageSharp Adapt")]
30-
public Rgb ColorSpaceConvert()
31-
{
32-
return ColorSpaceConverter.Adapt(Rgb);
33-
}
24+
public Rgb ColorSpaceConvert() => ColorProfileConverter.Convert<Rgb, Rgb>(Rgb);
3425
}

tests/ImageSharp.Benchmarks/Color/YcbCrToRgb.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@ public class YcbCrToRgb
1111
[Benchmark(Baseline = true, Description = "Floating Point Conversion")]
1212
public Vector3 YcbCrToRgba()
1313
{
14-
int y = 255;
15-
int cb = 128;
16-
int cr = 128;
14+
const int y = 255;
15+
const int cb = 128;
16+
const int cr = 128;
1717

1818
int ccb = cb - 128;
1919
int ccr = cr - 128;
@@ -28,9 +28,9 @@ public Vector3 YcbCrToRgba()
2828
[Benchmark(Description = "Scaled Integer Conversion")]
2929
public Vector3 YcbCrToRgbaScaled()
3030
{
31-
int y = 255;
32-
int cb = 128;
33-
int cr = 128;
31+
const int y = 255;
32+
const int cb = 128;
33+
const int cr = 128;
3434

3535
int ccb = cb - 128;
3636
int ccr = cr - 128;

0 commit comments

Comments
 (0)