Browse Source

Added benchmarks for encoding and decoding.

Former-commit-id: a60cfc5679620a3b838aa5286fe6d94b1a1f7973
Former-commit-id: 9b66ac00a9a154a1315b441d10f3c9654a495492
Former-commit-id: bb68aeba5ba81ffad3fa93000875ad2a4eb5d30a
af/merge-core
dirk 10 years ago
parent
commit
7f5411a682
  1. 131
      tests/ImageProcessorCore.Benchmarks/Image/Decode.cs
  2. 141
      tests/ImageProcessorCore.Benchmarks/Image/Encode.cs

131
tests/ImageProcessorCore.Benchmarks/Image/Decode.cs

@ -0,0 +1,131 @@
// <copyright file="Decode.cs" company="James Jackson-South">
// Copyright (c) James Jackson-South and contributors.
// Licensed under the Apache License, Version 2.0.
// </copyright>
namespace ImageProcessorCore.Benchmarks.Image
{
using System.Drawing;
using System.IO;
using BenchmarkDotNet.Attributes;
using CoreSize = ImageProcessorCore.Size;
using CoreImage = ImageProcessorCore.Image;
public class Decode
{
private byte[] bmpBytes;
private byte[] gifBytes;
private byte[] jpegBytes;
private byte[] pngBytes;
[Setup]
public void ReadImages()
{
if (bmpBytes == null)
{
bmpBytes = File.ReadAllBytes("../ImageProcessorCore.Tests/TestImages/Formats/Bmp/Car.bmp");
}
if (gifBytes == null)
{
gifBytes = File.ReadAllBytes("../ImageProcessorCore.Tests/TestImages/Formats/Gif/giphy.gif");
}
if (jpegBytes == null)
{
jpegBytes = File.ReadAllBytes("../ImageProcessorCore.Tests/TestImages/Formats/Jpg/Calliphora.jpg");
}
if (pngBytes == null)
{
pngBytes = File.ReadAllBytes("../ImageProcessorCore.Tests/TestImages/Formats/Png/splash.png");
}
}
[Benchmark(Description = "System.Drawing Bmp")]
public Size BmpSystemDrawing()
{
using (MemoryStream memoryStream = new MemoryStream(bmpBytes))
{
using (Image image = Image.FromStream(memoryStream))
{
return image.Size;
}
}
}
[Benchmark(Description = "ImageProcessorCore Bmp")]
public CoreSize BmpCore()
{
using (MemoryStream memoryStream = new MemoryStream(bmpBytes))
{
CoreImage image = new CoreImage(memoryStream);
return new CoreSize(image.Width, image.Height);
}
}
[Benchmark(Description = "System.Drawing Gif")]
public Size GifSystemDrawing()
{
using (MemoryStream memoryStream = new MemoryStream(gifBytes))
{
using (Image image = Image.FromStream(memoryStream))
{
return image.Size;
}
}
}
[Benchmark(Description = "ImageProcessorCore Gif")]
public CoreSize GifCore()
{
using (MemoryStream memoryStream = new MemoryStream(gifBytes))
{
CoreImage image = new CoreImage(memoryStream);
return new CoreSize(image.Width, image.Height);
}
}
[Benchmark(Description = "System.Drawing Jpeg")]
public Size JpegSystemDrawing()
{
using (MemoryStream memoryStream = new MemoryStream(jpegBytes))
{
using (Image image = Image.FromStream(memoryStream))
{
return image.Size;
}
}
}
[Benchmark(Description = "ImageProcessorCore Jpeg")]
public CoreSize JpegCore()
{
using (MemoryStream memoryStream = new MemoryStream(jpegBytes))
{
CoreImage image = new CoreImage(memoryStream);
return new CoreSize(image.Width, image.Height);
}
}
[Benchmark(Description = "System.Drawing Png")]
public Size PngSystemDrawing()
{
using (MemoryStream memoryStream = new MemoryStream(pngBytes))
{
using (Image image = Image.FromStream(memoryStream))
{
return image.Size;
}
}
}
[Benchmark(Description = "ImageProcessorCore Png")]
public CoreSize PngCore()
{
using (MemoryStream memoryStream = new MemoryStream(pngBytes))
{
CoreImage image = new CoreImage(memoryStream);
return new CoreSize(image.Width, image.Height);
}
}
}
}

141
tests/ImageProcessorCore.Benchmarks/Image/Encode.cs

@ -0,0 +1,141 @@
// <copyright file="Encode.cs" company="James Jackson-South">
// Copyright (c) James Jackson-South and contributors.
// Licensed under the Apache License, Version 2.0.
// </copyright>
namespace ImageProcessorCore.Benchmarks.Image
{
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using BenchmarkDotNet.Attributes;
using CoreImage = ImageProcessorCore.Image;
public class Encode
{
// System.Drawing needs this.
private Stream bmpStream;
private Stream gifStream;
private Stream jpegStream;
private Stream pngStream;
private Image bmpDrawing;
private Image gifDrawing;
private Image jpegDrawing;
private Image pngDrawing;
private CoreImage bmpCore;
private CoreImage gifCore;
private CoreImage jpegCore;
private CoreImage pngCore;
[Setup]
public void ReadImages()
{
if (bmpStream == null)
{
bmpStream = File.OpenRead("../ImageProcessorCore.Tests/TestImages/Formats/Bmp/Car.bmp");
bmpCore = new CoreImage(bmpStream);
bmpStream.Position = 0;
bmpDrawing = Image.FromStream(bmpStream);
}
if (gifStream == null)
{
gifStream = File.OpenRead("../ImageProcessorCore.Tests/TestImages/Formats/Gif/giphy.gif");
gifCore = new CoreImage(gifStream);
gifStream.Position = 0;
gifDrawing = Image.FromStream(gifStream);
}
if (jpegStream == null)
{
jpegStream = File.OpenRead("../ImageProcessorCore.Tests/TestImages/Formats/Jpg/Calliphora.jpg");
jpegCore = new CoreImage(jpegStream);
jpegStream.Position = 0;
jpegDrawing = Image.FromStream(jpegStream);
}
if (pngStream == null)
{
pngStream = File.OpenRead("../ImageProcessorCore.Tests/TestImages/Formats/Png/splash.png");
pngCore = new CoreImage(pngStream);
pngStream.Position = 0;
pngDrawing = Image.FromStream(pngStream);
}
}
[Benchmark(Description = "System.Drawing Bmp")]
public void BmpSystemDrawing()
{
using (MemoryStream memoryStream = new MemoryStream())
{
bmpDrawing.Save(memoryStream, ImageFormat.Bmp);
}
}
[Benchmark(Description = "ImageProcessorCore Bmp")]
public void BmpCore()
{
using (MemoryStream memoryStream = new MemoryStream())
{
bmpCore.SaveAsBmp(memoryStream);
}
}
[Benchmark(Description = "System.Drawing Gif")]
public void GifSystemDrawing()
{
using (MemoryStream memoryStream = new MemoryStream())
{
bmpDrawing.Save(memoryStream, ImageFormat.Gif);
}
}
[Benchmark(Description = "ImageProcessorCore Gif")]
public void GifCore()
{
using (MemoryStream memoryStream = new MemoryStream())
{
bmpCore.SaveAsGif(memoryStream);
}
}
[Benchmark(Description = "System.Drawing Jpeg")]
public void JpegSystemDrawing()
{
using (MemoryStream memoryStream = new MemoryStream())
{
bmpDrawing.Save(memoryStream, ImageFormat.Jpeg);
}
}
[Benchmark(Description = "ImageProcessorCore Jpeg")]
public void JpegCore()
{
using (MemoryStream memoryStream = new MemoryStream())
{
bmpCore.SaveAsJpeg(memoryStream);
}
}
[Benchmark(Description = "System.Drawing Png")]
public void PngSystemDrawing()
{
using (MemoryStream memoryStream = new MemoryStream())
{
bmpDrawing.Save(memoryStream, ImageFormat.Png);
}
}
[Benchmark(Description = "ImageProcessorCore Png")]
public void PngCore()
{
using (MemoryStream memoryStream = new MemoryStream())
{
bmpCore.SaveAsPng(memoryStream);
}
}
}
}
Loading…
Cancel
Save