Browse Source

benchmarking both decoders

af/merge-core
Anton Firszov 9 years ago
parent
commit
5055dd5d3b
  1. 27
      tests/ImageSharp.Benchmarks/Image/DecodeJpeg.cs

27
tests/ImageSharp.Benchmarks/Image/DecodeJpeg.cs

@ -11,6 +11,8 @@ namespace SixLabors.ImageSharp.Benchmarks.Image
using BenchmarkDotNet.Attributes; using BenchmarkDotNet.Attributes;
using BenchmarkDotNet.Attributes.Jobs; using BenchmarkDotNet.Attributes.Jobs;
using SixLabors.ImageSharp.Formats.Jpeg.GolangPort;
using SixLabors.ImageSharp.Formats.Jpeg.PdfJsPort;
using SixLabors.ImageSharp.Tests; using SixLabors.ImageSharp.Tests;
using CoreImage = ImageSharp.Image; using CoreImage = ImageSharp.Image;
@ -22,16 +24,19 @@ namespace SixLabors.ImageSharp.Benchmarks.Image
{ {
private byte[] jpegBytes; private byte[] jpegBytes;
private static readonly string TestImage = Path.Combine( private string TestImageFullPath => Path.Combine(
TestEnvironment.InputImagesDirectoryFullPath, TestEnvironment.InputImagesDirectoryFullPath,
TestImages.Jpeg.Baseline.Calliphora); this.TestImage);
[Params(TestImages.Jpeg.Baseline.Jpeg420Exif, TestImages.Jpeg.Baseline.Calliphora)]
public string TestImage { get; set; }
[GlobalSetup] [GlobalSetup]
public void ReadImages() public void ReadImages()
{ {
if (this.jpegBytes == null) if (this.jpegBytes == null)
{ {
this.jpegBytes = File.ReadAllBytes(TestImage); this.jpegBytes = File.ReadAllBytes(this.TestImageFullPath);
} }
} }
@ -48,11 +53,23 @@ namespace SixLabors.ImageSharp.Benchmarks.Image
} }
[Benchmark(Description = "Decode Jpeg - ImageSharp")] [Benchmark(Description = "Decode Jpeg - ImageSharp")]
public CoreSize JpegCore() public CoreSize JpegImageSharpOrig()
{
using (MemoryStream memoryStream = new MemoryStream(this.jpegBytes))
{
using (Image<Rgba32> image = CoreImage.Load<Rgba32>(memoryStream, new OrigJpegDecoder()))
{
return new CoreSize(image.Width, image.Height);
}
}
}
[Benchmark(Description = "Decode Jpeg - ImageSharp PdfJs")]
public CoreSize JpegImageSharpPdfJs()
{ {
using (MemoryStream memoryStream = new MemoryStream(this.jpegBytes)) using (MemoryStream memoryStream = new MemoryStream(this.jpegBytes))
{ {
using (Image<Rgba32> image = CoreImage.Load<Rgba32>(memoryStream)) using (Image<Rgba32> image = CoreImage.Load<Rgba32>(memoryStream, new PdfJsJpegDecoder()))
{ {
return new CoreSize(image.Width, image.Height); return new CoreSize(image.Width, image.Height);
} }

Loading…
Cancel
Save