Browse Source

fix Block8x8FTests.Copy1x1Scale, reorganize TestImages.Jpeg.BenchmarkSuite as a static class

af/merge-core
Anton Firszov 8 years ago
parent
commit
0c32fe7d19
  1. 21
      tests/ImageSharp.Benchmarks/Codecs/Jpeg/DecodeJpeg_Aggregate.cs
  2. 18
      tests/ImageSharp.Benchmarks/Codecs/Jpeg/DecodeJpeg_ImageSpecific.cs
  3. 12
      tests/ImageSharp.Benchmarks/Codecs/Jpeg/LoadResizeSave_Aggregate.cs
  4. 9
      tests/ImageSharp.Benchmarks/Codecs/Jpeg/LoadResizeSave_ImageSpecific.cs
  5. 2
      tests/ImageSharp.Tests/Formats/Jpg/Block8x8FTests.CopyToBufferArea.cs
  6. 19
      tests/ImageSharp.Tests/ProfilingBenchmarks/JpegBenchmarks.cs
  7. 21
      tests/ImageSharp.Tests/TestImages.cs

21
tests/ImageSharp.Benchmarks/Codecs/Jpeg/DecodeJpegMultiple.cs → tests/ImageSharp.Benchmarks/Codecs/Jpeg/DecodeJpeg_Aggregate.cs

@ -10,6 +10,7 @@ using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Tests;
using SDImage = System.Drawing.Image;
// ReSharper disable InconsistentNaming
namespace SixLabors.ImageSharp.Benchmarks.Codecs.Jpeg
{
@ -17,21 +18,29 @@ namespace SixLabors.ImageSharp.Benchmarks.Codecs.Jpeg
/// An expensive Jpeg benchmark, running on a wide range of input images, showing aggregate results.
/// </summary>
[Config(typeof(MultiImageBenchmarkBase.Config))]
public class DecodeJpegMultiple : MultiImageBenchmarkBase
public class DecodeJpeg_Aggregate : MultiImageBenchmarkBase
{
protected override IEnumerable<string> InputImageSubfoldersOrFiles => TestImages.Jpeg.BenchmarkSuite;
protected override IEnumerable<string> InputImageSubfoldersOrFiles =>
new[]
{
TestImages.Jpeg.BenchmarkSuite.Jpeg400_SmallMonochrome,
TestImages.Jpeg.BenchmarkSuite.Jpeg420Exif_MidSizeYCbCr,
TestImages.Jpeg.BenchmarkSuite.Lake_Small444YCbCr,
TestImages.Jpeg.BenchmarkSuite.MissingFF00ProgressiveBedroom159_MidSize420YCbCr,
TestImages.Jpeg.BenchmarkSuite.ExifGetString750Transform_Huge420YCbCr,
};
[Params(InputImageCategory.AllImages)]
public override InputImageCategory InputCategory { get; set; }
[Benchmark(Description = "DecodeJpegMultiple - ImageSharp")]
public void DecodeJpegImageSharp()
[Benchmark]
public void ImageSharp()
{
this.ForEachStream(ms => Image.Load<Rgba32>(ms, new JpegDecoder()));
}
[Benchmark(Baseline = true, Description = "DecodeJpegMultiple - System.Drawing")]
public void DecodeJpegSystemDrawing()
[Benchmark(Baseline = true)]
public void SystemDrawing()
{
this.ForEachStream(SDImage.FromStream);
}

18
tests/ImageSharp.Benchmarks/Codecs/Jpeg/DecodeJpeg_ImageSpecific.cs

@ -45,16 +45,18 @@ namespace SixLabors.ImageSharp.Benchmarks.Codecs.Jpeg
private byte[] jpegBytes;
private string TestImageFullPath => Path.Combine(TestEnvironment.InputImagesDirectoryFullPath, this.TestImage);
// NOTE:
// The scaled result for very large image "TestImages.Jpeg.Issues.ExifGetString750Transform"
// is almost the same as the result for Jpeg420Exif,
// which proves that the execution time for the most common YCbCr 420 path scales linearly
[Params(
TestImages.Jpeg.Baseline.Lake,
TestImages.Jpeg.Issues.BadRstProgressive518,
TestImages.Jpeg.BenchmarkSuite.Lake_Small444YCbCr,
TestImages.Jpeg.BenchmarkSuite.BadRstProgressive518_Large444YCbCr,
// The scaled result for the large image "ExifGetString750Transform_Huge420YCbCr"
// is almost the same as the result for Jpeg420Exif,
// which proves that the execution time for the most common YCbCr 420 path scales linearly.
//
// TestImages.Jpeg.BenchmarkSuite.ExifGetString750Transform_Huge420YCbCr,
TestImages.Jpeg.Baseline.Jpeg420Exif
TestImages.Jpeg.BenchmarkSuite.Jpeg420Exif_MidSizeYCbCr
)]
public string TestImage { get; set; }

12
tests/ImageSharp.Benchmarks/Codecs/Jpeg/LoadResizeSave_MultiImage.cs → tests/ImageSharp.Benchmarks/Codecs/Jpeg/LoadResizeSave_Aggregate.cs

@ -18,9 +18,17 @@ using SixLabors.ImageSharp.Tests;
namespace SixLabors.ImageSharp.Benchmarks.Codecs.Jpeg
{
[Config(typeof(MultiImageBenchmarkBase.Config))]
public class LoadResizeSave_MultiImage : MultiImageBenchmarkBase
public class LoadResizeSave_Aggregate : MultiImageBenchmarkBase
{
protected override IEnumerable<string> InputImageSubfoldersOrFiles => TestImages.Jpeg.BenchmarkSuite;
protected override IEnumerable<string> InputImageSubfoldersOrFiles =>
new[]
{
TestImages.Jpeg.BenchmarkSuite.Jpeg400_SmallMonochrome,
TestImages.Jpeg.BenchmarkSuite.Jpeg420Exif_MidSizeYCbCr,
TestImages.Jpeg.BenchmarkSuite.Lake_Small444YCbCr,
TestImages.Jpeg.BenchmarkSuite.MissingFF00ProgressiveBedroom159_MidSize420YCbCr,
TestImages.Jpeg.BenchmarkSuite.ExifGetString750Transform_Huge420YCbCr,
};
[Params(InputImageCategory.AllImages)]
public override InputImageCategory InputCategory { get; set; }

9
tests/ImageSharp.Benchmarks/Codecs/Jpeg/LoadResizeSave.cs → tests/ImageSharp.Benchmarks/Codecs/Jpeg/LoadResizeSave_ImageSpecific.cs

@ -11,11 +11,12 @@ using System.Drawing.Imaging;
using SixLabors.ImageSharp.Processing;
using SDImage = System.Drawing.Image;
using SixLabors.ImageSharp.Formats.Jpeg;
// ReSharper disable InconsistentNaming
namespace SixLabors.ImageSharp.Benchmarks.Codecs.Jpeg
{
[Config(typeof(Config.ShortClr))]
public class LoadResizeSave
public class LoadResizeSave_ImageSpecific
{
private readonly Configuration configuration = new Configuration(new JpegConfigurationModule());
@ -26,8 +27,10 @@ namespace SixLabors.ImageSharp.Benchmarks.Codecs.Jpeg
private string TestImageFullPath => Path.Combine(TestEnvironment.InputImagesDirectoryFullPath, this.TestImage);
[Params(
TestImages.Jpeg.Baseline.Jpeg420Exif
//, TestImages.Jpeg.Baseline.Calliphora
TestImages.Jpeg.BenchmarkSuite.Lake_Small444YCbCr,
TestImages.Jpeg.BenchmarkSuite.BadRstProgressive518_Large444YCbCr,
TestImages.Jpeg.BenchmarkSuite.Jpeg420Exif_MidSizeYCbCr
)]
public string TestImage { get; set; }

2
tests/ImageSharp.Tests/Formats/Jpg/Block8x8FTests.CopyToBufferArea.cs

@ -44,7 +44,7 @@ namespace SixLabors.ImageSharp.Tests.Formats.Jpg
{
Block8x8F block = CreateRandomFloatBlock(0, 100);
using (Buffer2D<float> buffer = Configuration.Default.MemoryAllocator.Allocate2D<float>(20, 20))
using (Buffer2D<float> buffer = Configuration.Default.MemoryAllocator.Allocate2D<float>(20, 20, AllocationOptions.Clean))
{
BufferArea<float> area = buffer.GetArea(5, 10, 8, 8);
block.Copy1x1Scale(area);

19
tests/ImageSharp.Tests/ProfilingBenchmarks/JpegBenchmarks.cs

@ -23,18 +23,13 @@ namespace SixLabors.ImageSharp.Tests.ProfilingBenchmarks
}
public static readonly TheoryData<string> DecodeJpegData = new TheoryData<string>
{
// Except "Jpeg400", all images are YCbCr
TestImages.Jpeg.Baseline.Jpeg400,
TestImages.Jpeg.Baseline.Jpeg420Exif,
TestImages.Jpeg.Baseline.Lake, // 444
// Using images from the "issues" set, because they are LARGE
TestImages.Jpeg.Issues.MissingFF00ProgressiveBedroom159, // 420
// TestImages.Jpeg.Issues.BadRstProgressive518, // 444
TestImages.Jpeg.Issues.ExifGetString750Transform, // 420
};
{
TestImages.Jpeg.BenchmarkSuite.Jpeg400_SmallMonochrome,
TestImages.Jpeg.BenchmarkSuite.Jpeg420Exif_MidSizeYCbCr,
TestImages.Jpeg.BenchmarkSuite.Lake_Small444YCbCr,
TestImages.Jpeg.BenchmarkSuite.MissingFF00ProgressiveBedroom159_MidSize420YCbCr,
TestImages.Jpeg.BenchmarkSuite.ExifGetString750Transform_Huge420YCbCr,
};
[Theory(Skip = ProfilingSetup.SkipProfilingTests)]
[MemberData(nameof(DecodeJpegData))]

21
tests/ImageSharp.Tests/TestImages.cs

@ -166,18 +166,17 @@ namespace SixLabors.ImageSharp.Tests
public static readonly string[] All = Baseline.All.Concat(Progressive.All).ToArray();
public static readonly string[] BenchmarkSuite =
public static class BenchmarkSuite
{
// Except "Jpeg400", all images are YCbCr
Baseline.Jpeg400,
Baseline.Jpeg420Exif,
Baseline.Lake, // 444
// Using images from the "issues" set, because they are LARGE
Issues.MissingFF00ProgressiveBedroom159, // 420
// Issues.BadRstProgressive518, // 444
Issues.ExifGetString750Transform, // 420
};
public const string Jpeg400_SmallMonochrome = Baseline.Jpeg400;
public const string Jpeg420Exif_MidSizeYCbCr = Baseline.Jpeg420Exif;
public const string Lake_Small444YCbCr = Baseline.Lake;
// A few large images from the "issues" set are actually very useful for benchmarking:
public const string MissingFF00ProgressiveBedroom159_MidSize420YCbCr = Issues.MissingFF00ProgressiveBedroom159;
public const string BadRstProgressive518_Large444YCbCr = Issues.BadRstProgressive518;
public const string ExifGetString750Transform_Huge420YCbCr = Issues.ExifGetString750Transform;
}
}
public static class Bmp

Loading…
Cancel
Save