Browse Source

Fix benchmarks.

af/merge-core
James Jackson-South 10 years ago
parent
commit
c5989cc813
  1. 22
      tests/ImageSharp.Benchmarks/BenchmarkBase.cs
  2. 13
      tests/ImageSharp.Benchmarks/Drawing/DrawBeziers.cs
  3. 11
      tests/ImageSharp.Benchmarks/Drawing/DrawLines.cs
  4. 4
      tests/ImageSharp.Benchmarks/Drawing/DrawPolygon.cs
  5. 18
      tests/ImageSharp.Benchmarks/Drawing/FillPolygon.cs
  6. 4
      tests/ImageSharp.Benchmarks/Drawing/FillRectangle.cs
  7. 13
      tests/ImageSharp.Benchmarks/Drawing/FillWithPattern.cs
  8. 2
      tests/ImageSharp.Benchmarks/Image/CopyPixels.cs
  9. 2
      tests/ImageSharp.Benchmarks/Image/DecodeBmp.cs
  10. 2
      tests/ImageSharp.Benchmarks/Image/DecodeFilteredPng.cs
  11. 2
      tests/ImageSharp.Benchmarks/Image/DecodeGif.cs
  12. 2
      tests/ImageSharp.Benchmarks/Image/DecodeJpeg.cs
  13. 2
      tests/ImageSharp.Benchmarks/Image/DecodePng.cs
  14. 2
      tests/ImageSharp.Benchmarks/Image/EncodeBmp.cs
  15. 2
      tests/ImageSharp.Benchmarks/Image/EncodeGif.cs
  16. 2
      tests/ImageSharp.Benchmarks/Image/EncodeJpeg.cs
  17. 10
      tests/ImageSharp.Benchmarks/Image/EncodeJpegMultiple.cs
  18. 2
      tests/ImageSharp.Benchmarks/Image/EncodePng.cs
  19. 2
      tests/ImageSharp.Benchmarks/Image/GetSetPixel.cs
  20. 10
      tests/ImageSharp.Benchmarks/Image/MultiImageBenchmarkBase.cs
  21. 2
      tests/ImageSharp.Benchmarks/Program.cs
  22. 2
      tests/ImageSharp.Benchmarks/Samplers/Crop.cs
  23. 2
      tests/ImageSharp.Benchmarks/Samplers/DetectEdges.cs
  24. 2
      tests/ImageSharp.Benchmarks/Samplers/Resize.cs

22
tests/ImageSharp.Benchmarks/BenchmarkBase.cs

@ -0,0 +1,22 @@
namespace ImageSharp.Benchmarks
{
using ImageSharp.Formats;
/// <summary>
/// The image benchmark base class.
/// </summary>
public abstract class BenchmarkBase
{
/// <summary>
/// Initializes a new instance of the <see cref="BenchmarkBase"/> class.
/// </summary>
protected BenchmarkBase()
{
// Add Image Formats
Configuration.Default.AddImageFormat(new JpegFormat());
Configuration.Default.AddImageFormat(new PngFormat());
Configuration.Default.AddImageFormat(new BmpFormat());
Configuration.Default.AddImageFormat(new GifFormat());
}
}
}

13
tests/ImageSharp.Benchmarks/Drawing/DrawBeziers.cs

@ -1,4 +1,4 @@
// <copyright file="Crop.cs" company="James Jackson-South"> // <copyright file="DrawBeziers.cs" company="James Jackson-South">
// Copyright (c) James Jackson-South and contributors. // Copyright (c) James Jackson-South and contributors.
// Licensed under the Apache License, Version 2.0. // Licensed under the Apache License, Version 2.0.
// </copyright> // </copyright>
@ -7,15 +7,16 @@ namespace ImageSharp.Benchmarks
{ {
using System.Drawing; using System.Drawing;
using System.Drawing.Drawing2D; using System.Drawing.Drawing2D;
using System.IO;
using System.Numerics;
using BenchmarkDotNet.Attributes; using BenchmarkDotNet.Attributes;
using CoreColor = ImageSharp.Color;
using CoreImage = ImageSharp.Image; using CoreImage = ImageSharp.Image;
using CorePoint = ImageSharp.Point; using CorePoint = ImageSharp.Point;
using CoreColor = ImageSharp.Color;
using System.IO;
using System.Numerics;
public class DrawBeziers public class DrawBeziers : BenchmarkBase
{ {
[Benchmark(Baseline = true, Description = "System.Drawing Draw Beziers")] [Benchmark(Baseline = true, Description = "System.Drawing Draw Beziers")]
public void DrawPathSystemDrawing() public void DrawPathSystemDrawing()
@ -47,7 +48,7 @@ namespace ImageSharp.Benchmarks
public void DrawLinesCore() public void DrawLinesCore()
{ {
CoreImage image = new CoreImage(800, 800); CoreImage image = new CoreImage(800, 800);
image.DrawBeziers(CoreColor.HotPink, 10, new[] { image.DrawBeziers(CoreColor.HotPink, 10, new[] {
new Vector2(10, 500), new Vector2(10, 500),
new Vector2(30, 10), new Vector2(30, 10),

11
tests/ImageSharp.Benchmarks/Drawing/DrawLines.cs

@ -1,4 +1,4 @@
// <copyright file="Crop.cs" company="James Jackson-South"> // <copyright file="DrawLines.cs" company="James Jackson-South">
// Copyright (c) James Jackson-South and contributors. // Copyright (c) James Jackson-South and contributors.
// Licensed under the Apache License, Version 2.0. // Licensed under the Apache License, Version 2.0.
// </copyright> // </copyright>
@ -7,15 +7,16 @@ namespace ImageSharp.Benchmarks
{ {
using System.Drawing; using System.Drawing;
using System.Drawing.Drawing2D; using System.Drawing.Drawing2D;
using System.IO;
using System.Numerics;
using BenchmarkDotNet.Attributes; using BenchmarkDotNet.Attributes;
using CoreColor = ImageSharp.Color;
using CoreImage = ImageSharp.Image; using CoreImage = ImageSharp.Image;
using CorePoint = ImageSharp.Point; using CorePoint = ImageSharp.Point;
using CoreColor = ImageSharp.Color;
using System.IO;
using System.Numerics;
public class DrawLines public class DrawLines : BenchmarkBase
{ {
[Benchmark(Baseline = true, Description = "System.Drawing Draw Lines")] [Benchmark(Baseline = true, Description = "System.Drawing Draw Lines")]
public void DrawPathSystemDrawing() public void DrawPathSystemDrawing()

4
tests/ImageSharp.Benchmarks/Drawing/DrawPolygon.cs

@ -15,7 +15,7 @@ namespace ImageSharp.Benchmarks
using System.IO; using System.IO;
using System.Numerics; using System.Numerics;
public class DrawPolygon public class DrawPolygon : BenchmarkBase
{ {
[Benchmark(Baseline = true, Description = "System.Drawing Draw Polygon")] [Benchmark(Baseline = true, Description = "System.Drawing Draw Polygon")]
public void DrawPolygonSystemDrawing() public void DrawPolygonSystemDrawing()
@ -46,7 +46,7 @@ namespace ImageSharp.Benchmarks
public void DrawPolygonCore() public void DrawPolygonCore()
{ {
CoreImage image = new CoreImage(800, 800); CoreImage image = new CoreImage(800, 800);
image.DrawPolygon(CoreColor.HotPink, 10, new[] { image.DrawPolygon(CoreColor.HotPink, 10, new[] {
new Vector2(10, 10), new Vector2(10, 10),
new Vector2(550, 50), new Vector2(550, 50),

18
tests/ImageSharp.Benchmarks/Drawing/FillPolygon.cs

@ -1,4 +1,4 @@
// <copyright file="Crop.cs" company="James Jackson-South"> // <copyright file="FillPolygon.cs" company="James Jackson-South">
// Copyright (c) James Jackson-South and contributors. // Copyright (c) James Jackson-South and contributors.
// Licensed under the Apache License, Version 2.0. // Licensed under the Apache License, Version 2.0.
// </copyright> // </copyright>
@ -7,14 +7,15 @@ namespace ImageSharp.Benchmarks
{ {
using System.Drawing; using System.Drawing;
using System.Drawing.Drawing2D; using System.Drawing.Drawing2D;
using System.IO;
using System.Numerics;
using BenchmarkDotNet.Attributes; using BenchmarkDotNet.Attributes;
using CoreImage = ImageSharp.Image;
using CoreColor = ImageSharp.Color; using CoreColor = ImageSharp.Color;
using System.IO; using CoreImage = ImageSharp.Image;
using System.Numerics;
public class FillPolygon public class FillPolygon : BenchmarkBase
{ {
[Benchmark(Baseline = true, Description = "System.Drawing Fill Polygon")] [Benchmark(Baseline = true, Description = "System.Drawing Fill Polygon")]
public void DrawSolidPolygonSystemDrawing() public void DrawSolidPolygonSystemDrawing()
@ -25,7 +26,9 @@ namespace ImageSharp.Benchmarks
using (Graphics graphics = Graphics.FromImage(destination)) using (Graphics graphics = Graphics.FromImage(destination))
{ {
graphics.SmoothingMode = SmoothingMode.AntiAlias; graphics.SmoothingMode = SmoothingMode.AntiAlias;
graphics.FillPolygon(Brushes.HotPink, new[] { graphics.FillPolygon(Brushes.HotPink,
new[]
{
new Point(10, 10), new Point(10, 10),
new Point(550, 50), new Point(550, 50),
new Point(200, 400) new Point(200, 400)
@ -47,8 +50,7 @@ namespace ImageSharp.Benchmarks
new Vector2(10, 10), new Vector2(10, 10),
new Vector2(550, 50), new Vector2(550, 50),
new Vector2(200, 400) new Vector2(200, 400)
} });
);
using (MemoryStream ms = new MemoryStream()) using (MemoryStream ms = new MemoryStream())
{ {

4
tests/ImageSharp.Benchmarks/Drawing/FillRectangle.cs

@ -13,10 +13,10 @@ namespace ImageSharp.Benchmarks
using CoreRectangle = ImageSharp.Rectangle; using CoreRectangle = ImageSharp.Rectangle;
using CoreColor = ImageSharp.Color; using CoreColor = ImageSharp.Color;
using CoreSize = ImageSharp.Size; using CoreSize = ImageSharp.Size;
using System.IO;
using System.Numerics; using System.Numerics;
public class FillRectangle public class FillRectangle : BenchmarkBase
{ {
[Benchmark(Baseline = true, Description = "System.Drawing Fill Rectangle")] [Benchmark(Baseline = true, Description = "System.Drawing Fill Rectangle")]
public Size FillRectangleSystemDrawing() public Size FillRectangleSystemDrawing()

13
tests/ImageSharp.Benchmarks/Drawing/FillWithPattern.cs

@ -1,4 +1,4 @@
// <copyright file="Crop.cs" company="James Jackson-South"> // <copyright file="FillWithPattern.cs" company="James Jackson-South">
// Copyright (c) James Jackson-South and contributors. // Copyright (c) James Jackson-South and contributors.
// Licensed under the Apache License, Version 2.0. // Licensed under the Apache License, Version 2.0.
// </copyright> // </copyright>
@ -7,14 +7,13 @@ namespace ImageSharp.Benchmarks
{ {
using System.Drawing; using System.Drawing;
using System.Drawing.Drawing2D; using System.Drawing.Drawing2D;
using System.IO;
using BenchmarkDotNet.Attributes; using BenchmarkDotNet.Attributes;
using CoreImage = ImageSharp.Image;
using CorePoint = ImageSharp.Point;
using CoreColor = ImageSharp.Color;
using CoreBrushes = ImageSharp.Drawing.Brushes.Brushes; using CoreBrushes = ImageSharp.Drawing.Brushes.Brushes;
using CorePatternBrush = ImageSharp.Drawing.Brushes.PatternBrush; using CoreColor = ImageSharp.Color;
using System.IO; using CoreImage = ImageSharp.Image;
public class FillWithPattern public class FillWithPattern
{ {
@ -27,7 +26,7 @@ namespace ImageSharp.Benchmarks
{ {
graphics.SmoothingMode = SmoothingMode.AntiAlias; graphics.SmoothingMode = SmoothingMode.AntiAlias;
var brush = new HatchBrush(HatchStyle.BackwardDiagonal, Color.HotPink); var brush = new HatchBrush(HatchStyle.BackwardDiagonal, Color.HotPink);
graphics.FillRectangle(brush, new Rectangle(0,0, 800,800)); // can't find a way to flood fill with a brush graphics.FillRectangle(brush, new Rectangle(0,0, 800,800)); // can't find a way to flood fill with a brush
} }
using (MemoryStream ms = new MemoryStream()) using (MemoryStream ms = new MemoryStream())
{ {

2
tests/ImageSharp.Benchmarks/Image/CopyPixels.cs

@ -12,7 +12,7 @@ namespace ImageSharp.Benchmarks.Image
using CoreColor = ImageSharp.Color; using CoreColor = ImageSharp.Color;
using CoreImage = ImageSharp.Image; using CoreImage = ImageSharp.Image;
public class CopyPixels public class CopyPixels : BenchmarkBase
{ {
[Benchmark(Description = "Copy by Pixel")] [Benchmark(Description = "Copy by Pixel")]
public CoreColor CopyByPixel() public CoreColor CopyByPixel()

2
tests/ImageSharp.Benchmarks/Image/DecodeBmp.cs

@ -13,7 +13,7 @@ namespace ImageSharp.Benchmarks.Image
using CoreImage = ImageSharp.Image; using CoreImage = ImageSharp.Image;
using CoreSize = ImageSharp.Size; using CoreSize = ImageSharp.Size;
public class DecodeBmp public class DecodeBmp : BenchmarkBase
{ {
private byte[] bmpBytes; private byte[] bmpBytes;

2
tests/ImageSharp.Benchmarks/Image/DecodeFilteredPng.cs

@ -11,7 +11,7 @@ namespace ImageSharp.Benchmarks.Image
using ImageSharp; using ImageSharp;
public class DecodeFilteredPng public class DecodeFilteredPng : BenchmarkBase
{ {
private MemoryStream filter0; private MemoryStream filter0;
private MemoryStream filter1; private MemoryStream filter1;

2
tests/ImageSharp.Benchmarks/Image/DecodeGif.cs

@ -13,7 +13,7 @@ namespace ImageSharp.Benchmarks.Image
using CoreImage = ImageSharp.Image; using CoreImage = ImageSharp.Image;
using CoreSize = ImageSharp.Size; using CoreSize = ImageSharp.Size;
public class DecodeGif public class DecodeGif : BenchmarkBase
{ {
private byte[] gifBytes; private byte[] gifBytes;

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

@ -13,7 +13,7 @@ namespace ImageSharp.Benchmarks.Image
using CoreImage = ImageSharp.Image; using CoreImage = ImageSharp.Image;
using CoreSize = ImageSharp.Size; using CoreSize = ImageSharp.Size;
public class DecodeJpeg public class DecodeJpeg : BenchmarkBase
{ {
private byte[] jpegBytes; private byte[] jpegBytes;

2
tests/ImageSharp.Benchmarks/Image/DecodePng.cs

@ -13,7 +13,7 @@ namespace ImageSharp.Benchmarks.Image
using CoreImage = ImageSharp.Image; using CoreImage = ImageSharp.Image;
using CoreSize = ImageSharp.Size; using CoreSize = ImageSharp.Size;
public class DecodePng public class DecodePng : BenchmarkBase
{ {
private byte[] pngBytes; private byte[] pngBytes;

2
tests/ImageSharp.Benchmarks/Image/EncodeBmp.cs

@ -12,7 +12,7 @@ namespace ImageSharp.Benchmarks.Image
using BenchmarkDotNet.Attributes; using BenchmarkDotNet.Attributes;
using CoreImage = ImageSharp.Image; using CoreImage = ImageSharp.Image;
public class EncodeBmp public class EncodeBmp : BenchmarkBase
{ {
// System.Drawing needs this. // System.Drawing needs this.
private Stream bmpStream; private Stream bmpStream;

2
tests/ImageSharp.Benchmarks/Image/EncodeGif.cs

@ -12,7 +12,7 @@ namespace ImageSharp.Benchmarks.Image
using BenchmarkDotNet.Attributes; using BenchmarkDotNet.Attributes;
using CoreImage = ImageSharp.Image; using CoreImage = ImageSharp.Image;
public class EncodeGif public class EncodeGif : BenchmarkBase
{ {
// System.Drawing needs this. // System.Drawing needs this.
private Stream bmpStream; private Stream bmpStream;

2
tests/ImageSharp.Benchmarks/Image/EncodeJpeg.cs

@ -12,7 +12,7 @@ namespace ImageSharp.Benchmarks.Image
using BenchmarkDotNet.Attributes; using BenchmarkDotNet.Attributes;
using CoreImage = ImageSharp.Image; using CoreImage = ImageSharp.Image;
public class EncodeJpeg public class EncodeJpeg : BenchmarkBase
{ {
// System.Drawing needs this. // System.Drawing needs this.
private Stream bmpStream; private Stream bmpStream;

10
tests/ImageSharp.Benchmarks/Image/EncodeJpegMultiple.cs

@ -15,11 +15,11 @@
public class EncodeJpegMultiple : MultiImageBenchmarkBase.WithImagesPreloaded public class EncodeJpegMultiple : MultiImageBenchmarkBase.WithImagesPreloaded
{ {
protected override IEnumerable<string> InputImageSubfolders => new[] protected override IEnumerable<string> InputImageSubfolders => new[]
{ {
"Formats/Bmp/", "Formats/Bmp/",
"Formats/Jpg/baseline" "Formats/Jpg/baseline"
}; };
protected override IEnumerable<string> FileFilters => new[] { "*.bmp", "*.jpg" }; protected override IEnumerable<string> FileFilters => new[] { "*.bmp", "*.jpg" };
[Benchmark(Description = "EncodeJpegMultiple - ImageSharp")] [Benchmark(Description = "EncodeJpegMultiple - ImageSharp")]

2
tests/ImageSharp.Benchmarks/Image/EncodePng.cs

@ -12,7 +12,7 @@ namespace ImageSharp.Benchmarks.Image
using BenchmarkDotNet.Attributes; using BenchmarkDotNet.Attributes;
using CoreImage = ImageSharp.Image; using CoreImage = ImageSharp.Image;
public class EncodePng public class EncodePng : BenchmarkBase
{ {
// System.Drawing needs this. // System.Drawing needs this.
private Stream bmpStream; private Stream bmpStream;

2
tests/ImageSharp.Benchmarks/Image/GetSetPixel.cs

@ -13,7 +13,7 @@ namespace ImageSharp.Benchmarks.Image
using CoreImage = ImageSharp.Image; using CoreImage = ImageSharp.Image;
using SystemColor = System.Drawing.Color; using SystemColor = System.Drawing.Color;
public class GetSetPixel public class GetSetPixel : BenchmarkBase
{ {
[Benchmark(Baseline = true, Description = "System.Drawing GetSet pixel")] [Benchmark(Baseline = true, Description = "System.Drawing GetSet pixel")]
public SystemColor ResizeSystemDrawing() public SystemColor ResizeSystemDrawing()

10
tests/ImageSharp.Benchmarks/Image/MultiImageBenchmarkBase.cs

@ -11,7 +11,7 @@
using Image = ImageSharp.Image; using Image = ImageSharp.Image;
public abstract class MultiImageBenchmarkBase public abstract class MultiImageBenchmarkBase : BenchmarkBase
{ {
protected Dictionary<string, byte[]> FileNamesToBytes = new Dictionary<string, byte[]>(); protected Dictionary<string, byte[]> FileNamesToBytes = new Dictionary<string, byte[]>();
@ -26,7 +26,7 @@
LargeImagesOnly LargeImagesOnly
} }
[Params(TestingMode.All, TestingMode.SmallImagesOnly, TestingMode.LargeImagesOnly)] [Params(TestingMode.All, TestingMode.SmallImagesOnly, TestingMode.LargeImagesOnly)]
public TestingMode Mode { get; set; } public TestingMode Mode { get; set; }
@ -62,7 +62,7 @@
this.EnumeratePairsByBenchmarkSettings( this.EnumeratePairsByBenchmarkSettings(
this.FileNamesToBytes, this.FileNamesToBytes,
arr => arr.Length < this.LargeImageThresholdInBytes); arr => arr.Length < this.LargeImageThresholdInBytes);
protected abstract IEnumerable<string> InputImageSubfolders { get; } protected abstract IEnumerable<string> InputImageSubfolders { get; }
[Setup] [Setup]
@ -122,7 +122,7 @@
using (var ms1 = new MemoryStream(bytes)) using (var ms1 = new MemoryStream(bytes))
{ {
this.FileNamesToImageSharpImages[fn] = new Image(ms1); this.FileNamesToImageSharpImages[fn] = new Image(ms1);
} }
this.FileNamesToSystemDrawingImages[fn] = new Bitmap(new MemoryStream(bytes)); this.FileNamesToSystemDrawingImages[fn] = new Bitmap(new MemoryStream(bytes));
@ -178,7 +178,7 @@
} }
} }
} }

2
tests/ImageSharp.Benchmarks/Program.cs

@ -7,6 +7,8 @@ namespace ImageSharp.Benchmarks
{ {
using BenchmarkDotNet.Running; using BenchmarkDotNet.Running;
using ImageSharp.Formats;
public class Program public class Program
{ {
/// <summary> /// <summary>

2
tests/ImageSharp.Benchmarks/Samplers/Crop.cs

@ -13,7 +13,7 @@ namespace ImageSharp.Benchmarks
using CoreImage = ImageSharp.Image; using CoreImage = ImageSharp.Image;
using CoreSize = ImageSharp.Size; using CoreSize = ImageSharp.Size;
public class Crop public class Crop : BenchmarkBase
{ {
[Benchmark(Baseline = true, Description = "System.Drawing Crop")] [Benchmark(Baseline = true, Description = "System.Drawing Crop")]
public Size CropSystemDrawing() public Size CropSystemDrawing()

2
tests/ImageSharp.Benchmarks/Samplers/DetectEdges.cs

@ -11,7 +11,7 @@ namespace ImageSharp.Benchmarks
using CoreImage = ImageSharp.Image; using CoreImage = ImageSharp.Image;
public class DetectEdges public class DetectEdges : BenchmarkBase
{ {
private CoreImage image; private CoreImage image;

2
tests/ImageSharp.Benchmarks/Samplers/Resize.cs

@ -12,7 +12,7 @@ namespace ImageSharp.Benchmarks
using CoreSize = ImageSharp.Size; using CoreSize = ImageSharp.Size;
using CoreImage = ImageSharp.Image; using CoreImage = ImageSharp.Image;
public class Resize public class Resize : BenchmarkBase
{ {
[Benchmark(Baseline = true, Description = "System.Drawing Resize")] [Benchmark(Baseline = true, Description = "System.Drawing Resize")]
public Size ResizeSystemDrawing() public Size ResizeSystemDrawing()

Loading…
Cancel
Save