From c5989cc813e1abf4b1535eb3fec12852bcbf1a3c Mon Sep 17 00:00:00 2001 From: James Jackson-South Date: Sun, 1 Jan 2017 23:04:21 +1100 Subject: [PATCH] Fix benchmarks. --- tests/ImageSharp.Benchmarks/BenchmarkBase.cs | 22 +++++++++++++++++++ .../Drawing/DrawBeziers.cs | 13 ++++++----- .../Drawing/DrawLines.cs | 11 +++++----- .../Drawing/DrawPolygon.cs | 4 ++-- .../Drawing/FillPolygon.cs | 18 ++++++++------- .../Drawing/FillRectangle.cs | 4 ++-- .../Drawing/FillWithPattern.cs | 13 +++++------ .../ImageSharp.Benchmarks/Image/CopyPixels.cs | 2 +- .../ImageSharp.Benchmarks/Image/DecodeBmp.cs | 2 +- .../Image/DecodeFilteredPng.cs | 2 +- .../ImageSharp.Benchmarks/Image/DecodeGif.cs | 2 +- .../ImageSharp.Benchmarks/Image/DecodeJpeg.cs | 2 +- .../ImageSharp.Benchmarks/Image/DecodePng.cs | 2 +- .../ImageSharp.Benchmarks/Image/EncodeBmp.cs | 2 +- .../ImageSharp.Benchmarks/Image/EncodeGif.cs | 2 +- .../ImageSharp.Benchmarks/Image/EncodeJpeg.cs | 2 +- .../Image/EncodeJpegMultiple.cs | 10 ++++----- .../ImageSharp.Benchmarks/Image/EncodePng.cs | 2 +- .../Image/GetSetPixel.cs | 2 +- .../Image/MultiImageBenchmarkBase.cs | 10 ++++----- tests/ImageSharp.Benchmarks/Program.cs | 2 ++ tests/ImageSharp.Benchmarks/Samplers/Crop.cs | 2 +- .../Samplers/DetectEdges.cs | 2 +- .../ImageSharp.Benchmarks/Samplers/Resize.cs | 2 +- 24 files changed, 81 insertions(+), 54 deletions(-) create mode 100644 tests/ImageSharp.Benchmarks/BenchmarkBase.cs diff --git a/tests/ImageSharp.Benchmarks/BenchmarkBase.cs b/tests/ImageSharp.Benchmarks/BenchmarkBase.cs new file mode 100644 index 000000000..d6e8ac692 --- /dev/null +++ b/tests/ImageSharp.Benchmarks/BenchmarkBase.cs @@ -0,0 +1,22 @@ +namespace ImageSharp.Benchmarks +{ + using ImageSharp.Formats; + + /// + /// The image benchmark base class. + /// + public abstract class BenchmarkBase + { + /// + /// Initializes a new instance of the class. + /// + 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()); + } + } +} diff --git a/tests/ImageSharp.Benchmarks/Drawing/DrawBeziers.cs b/tests/ImageSharp.Benchmarks/Drawing/DrawBeziers.cs index 559cc4c11..2dd3acb0a 100644 --- a/tests/ImageSharp.Benchmarks/Drawing/DrawBeziers.cs +++ b/tests/ImageSharp.Benchmarks/Drawing/DrawBeziers.cs @@ -1,4 +1,4 @@ -// +// // Copyright (c) James Jackson-South and contributors. // Licensed under the Apache License, Version 2.0. // @@ -7,15 +7,16 @@ namespace ImageSharp.Benchmarks { using System.Drawing; using System.Drawing.Drawing2D; + using System.IO; + using System.Numerics; using BenchmarkDotNet.Attributes; + + using CoreColor = ImageSharp.Color; using CoreImage = ImageSharp.Image; 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")] public void DrawPathSystemDrawing() @@ -47,7 +48,7 @@ namespace ImageSharp.Benchmarks public void DrawLinesCore() { CoreImage image = new CoreImage(800, 800); - + image.DrawBeziers(CoreColor.HotPink, 10, new[] { new Vector2(10, 500), new Vector2(30, 10), diff --git a/tests/ImageSharp.Benchmarks/Drawing/DrawLines.cs b/tests/ImageSharp.Benchmarks/Drawing/DrawLines.cs index 429da047d..b418feb5b 100644 --- a/tests/ImageSharp.Benchmarks/Drawing/DrawLines.cs +++ b/tests/ImageSharp.Benchmarks/Drawing/DrawLines.cs @@ -1,4 +1,4 @@ -// +// // Copyright (c) James Jackson-South and contributors. // Licensed under the Apache License, Version 2.0. // @@ -7,15 +7,16 @@ namespace ImageSharp.Benchmarks { using System.Drawing; using System.Drawing.Drawing2D; + using System.IO; + using System.Numerics; using BenchmarkDotNet.Attributes; + + using CoreColor = ImageSharp.Color; using CoreImage = ImageSharp.Image; 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")] public void DrawPathSystemDrawing() diff --git a/tests/ImageSharp.Benchmarks/Drawing/DrawPolygon.cs b/tests/ImageSharp.Benchmarks/Drawing/DrawPolygon.cs index 405e8d0a7..46526330f 100644 --- a/tests/ImageSharp.Benchmarks/Drawing/DrawPolygon.cs +++ b/tests/ImageSharp.Benchmarks/Drawing/DrawPolygon.cs @@ -15,7 +15,7 @@ namespace ImageSharp.Benchmarks using System.IO; using System.Numerics; - public class DrawPolygon + public class DrawPolygon : BenchmarkBase { [Benchmark(Baseline = true, Description = "System.Drawing Draw Polygon")] public void DrawPolygonSystemDrawing() @@ -46,7 +46,7 @@ namespace ImageSharp.Benchmarks public void DrawPolygonCore() { CoreImage image = new CoreImage(800, 800); - + image.DrawPolygon(CoreColor.HotPink, 10, new[] { new Vector2(10, 10), new Vector2(550, 50), diff --git a/tests/ImageSharp.Benchmarks/Drawing/FillPolygon.cs b/tests/ImageSharp.Benchmarks/Drawing/FillPolygon.cs index 5e07d1242..b774d73cb 100644 --- a/tests/ImageSharp.Benchmarks/Drawing/FillPolygon.cs +++ b/tests/ImageSharp.Benchmarks/Drawing/FillPolygon.cs @@ -1,4 +1,4 @@ -// +// // Copyright (c) James Jackson-South and contributors. // Licensed under the Apache License, Version 2.0. // @@ -7,14 +7,15 @@ namespace ImageSharp.Benchmarks { using System.Drawing; using System.Drawing.Drawing2D; + using System.IO; + using System.Numerics; using BenchmarkDotNet.Attributes; - using CoreImage = ImageSharp.Image; + using CoreColor = ImageSharp.Color; - using System.IO; - using System.Numerics; + using CoreImage = ImageSharp.Image; - public class FillPolygon + public class FillPolygon : BenchmarkBase { [Benchmark(Baseline = true, Description = "System.Drawing Fill Polygon")] public void DrawSolidPolygonSystemDrawing() @@ -25,7 +26,9 @@ namespace ImageSharp.Benchmarks using (Graphics graphics = Graphics.FromImage(destination)) { graphics.SmoothingMode = SmoothingMode.AntiAlias; - graphics.FillPolygon(Brushes.HotPink, new[] { + graphics.FillPolygon(Brushes.HotPink, + new[] + { new Point(10, 10), new Point(550, 50), new Point(200, 400) @@ -47,8 +50,7 @@ namespace ImageSharp.Benchmarks new Vector2(10, 10), new Vector2(550, 50), new Vector2(200, 400) - } - ); + }); using (MemoryStream ms = new MemoryStream()) { diff --git a/tests/ImageSharp.Benchmarks/Drawing/FillRectangle.cs b/tests/ImageSharp.Benchmarks/Drawing/FillRectangle.cs index c16e6676a..d9782249a 100644 --- a/tests/ImageSharp.Benchmarks/Drawing/FillRectangle.cs +++ b/tests/ImageSharp.Benchmarks/Drawing/FillRectangle.cs @@ -13,10 +13,10 @@ namespace ImageSharp.Benchmarks using CoreRectangle = ImageSharp.Rectangle; using CoreColor = ImageSharp.Color; using CoreSize = ImageSharp.Size; - using System.IO; + using System.Numerics; - public class FillRectangle + public class FillRectangle : BenchmarkBase { [Benchmark(Baseline = true, Description = "System.Drawing Fill Rectangle")] public Size FillRectangleSystemDrawing() diff --git a/tests/ImageSharp.Benchmarks/Drawing/FillWithPattern.cs b/tests/ImageSharp.Benchmarks/Drawing/FillWithPattern.cs index 6952fcd0f..e5676cd13 100644 --- a/tests/ImageSharp.Benchmarks/Drawing/FillWithPattern.cs +++ b/tests/ImageSharp.Benchmarks/Drawing/FillWithPattern.cs @@ -1,4 +1,4 @@ -// +// // Copyright (c) James Jackson-South and contributors. // Licensed under the Apache License, Version 2.0. // @@ -7,14 +7,13 @@ namespace ImageSharp.Benchmarks { using System.Drawing; using System.Drawing.Drawing2D; + using System.IO; using BenchmarkDotNet.Attributes; - using CoreImage = ImageSharp.Image; - using CorePoint = ImageSharp.Point; - using CoreColor = ImageSharp.Color; + using CoreBrushes = ImageSharp.Drawing.Brushes.Brushes; - using CorePatternBrush = ImageSharp.Drawing.Brushes.PatternBrush; - using System.IO; + using CoreColor = ImageSharp.Color; + using CoreImage = ImageSharp.Image; public class FillWithPattern { @@ -27,7 +26,7 @@ namespace ImageSharp.Benchmarks { graphics.SmoothingMode = SmoothingMode.AntiAlias; 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()) { diff --git a/tests/ImageSharp.Benchmarks/Image/CopyPixels.cs b/tests/ImageSharp.Benchmarks/Image/CopyPixels.cs index cddcc268d..ae732d053 100644 --- a/tests/ImageSharp.Benchmarks/Image/CopyPixels.cs +++ b/tests/ImageSharp.Benchmarks/Image/CopyPixels.cs @@ -12,7 +12,7 @@ namespace ImageSharp.Benchmarks.Image using CoreColor = ImageSharp.Color; using CoreImage = ImageSharp.Image; - public class CopyPixels + public class CopyPixels : BenchmarkBase { [Benchmark(Description = "Copy by Pixel")] public CoreColor CopyByPixel() diff --git a/tests/ImageSharp.Benchmarks/Image/DecodeBmp.cs b/tests/ImageSharp.Benchmarks/Image/DecodeBmp.cs index 263e66462..b8f433a14 100644 --- a/tests/ImageSharp.Benchmarks/Image/DecodeBmp.cs +++ b/tests/ImageSharp.Benchmarks/Image/DecodeBmp.cs @@ -13,7 +13,7 @@ namespace ImageSharp.Benchmarks.Image using CoreImage = ImageSharp.Image; using CoreSize = ImageSharp.Size; - public class DecodeBmp + public class DecodeBmp : BenchmarkBase { private byte[] bmpBytes; diff --git a/tests/ImageSharp.Benchmarks/Image/DecodeFilteredPng.cs b/tests/ImageSharp.Benchmarks/Image/DecodeFilteredPng.cs index e5c1e5dc4..5f7050fb0 100644 --- a/tests/ImageSharp.Benchmarks/Image/DecodeFilteredPng.cs +++ b/tests/ImageSharp.Benchmarks/Image/DecodeFilteredPng.cs @@ -11,7 +11,7 @@ namespace ImageSharp.Benchmarks.Image using ImageSharp; - public class DecodeFilteredPng + public class DecodeFilteredPng : BenchmarkBase { private MemoryStream filter0; private MemoryStream filter1; diff --git a/tests/ImageSharp.Benchmarks/Image/DecodeGif.cs b/tests/ImageSharp.Benchmarks/Image/DecodeGif.cs index e8599b357..3da6eb362 100644 --- a/tests/ImageSharp.Benchmarks/Image/DecodeGif.cs +++ b/tests/ImageSharp.Benchmarks/Image/DecodeGif.cs @@ -13,7 +13,7 @@ namespace ImageSharp.Benchmarks.Image using CoreImage = ImageSharp.Image; using CoreSize = ImageSharp.Size; - public class DecodeGif + public class DecodeGif : BenchmarkBase { private byte[] gifBytes; diff --git a/tests/ImageSharp.Benchmarks/Image/DecodeJpeg.cs b/tests/ImageSharp.Benchmarks/Image/DecodeJpeg.cs index 6f2bd5e60..867583c7f 100644 --- a/tests/ImageSharp.Benchmarks/Image/DecodeJpeg.cs +++ b/tests/ImageSharp.Benchmarks/Image/DecodeJpeg.cs @@ -13,7 +13,7 @@ namespace ImageSharp.Benchmarks.Image using CoreImage = ImageSharp.Image; using CoreSize = ImageSharp.Size; - public class DecodeJpeg + public class DecodeJpeg : BenchmarkBase { private byte[] jpegBytes; diff --git a/tests/ImageSharp.Benchmarks/Image/DecodePng.cs b/tests/ImageSharp.Benchmarks/Image/DecodePng.cs index ffc02b6ba..f3bda758d 100644 --- a/tests/ImageSharp.Benchmarks/Image/DecodePng.cs +++ b/tests/ImageSharp.Benchmarks/Image/DecodePng.cs @@ -13,7 +13,7 @@ namespace ImageSharp.Benchmarks.Image using CoreImage = ImageSharp.Image; using CoreSize = ImageSharp.Size; - public class DecodePng + public class DecodePng : BenchmarkBase { private byte[] pngBytes; diff --git a/tests/ImageSharp.Benchmarks/Image/EncodeBmp.cs b/tests/ImageSharp.Benchmarks/Image/EncodeBmp.cs index 261a7f269..5a77fbca0 100644 --- a/tests/ImageSharp.Benchmarks/Image/EncodeBmp.cs +++ b/tests/ImageSharp.Benchmarks/Image/EncodeBmp.cs @@ -12,7 +12,7 @@ namespace ImageSharp.Benchmarks.Image using BenchmarkDotNet.Attributes; using CoreImage = ImageSharp.Image; - public class EncodeBmp + public class EncodeBmp : BenchmarkBase { // System.Drawing needs this. private Stream bmpStream; diff --git a/tests/ImageSharp.Benchmarks/Image/EncodeGif.cs b/tests/ImageSharp.Benchmarks/Image/EncodeGif.cs index e2acb4db5..42feb085f 100644 --- a/tests/ImageSharp.Benchmarks/Image/EncodeGif.cs +++ b/tests/ImageSharp.Benchmarks/Image/EncodeGif.cs @@ -12,7 +12,7 @@ namespace ImageSharp.Benchmarks.Image using BenchmarkDotNet.Attributes; using CoreImage = ImageSharp.Image; - public class EncodeGif + public class EncodeGif : BenchmarkBase { // System.Drawing needs this. private Stream bmpStream; diff --git a/tests/ImageSharp.Benchmarks/Image/EncodeJpeg.cs b/tests/ImageSharp.Benchmarks/Image/EncodeJpeg.cs index 8bed1a56f..f1e3b2114 100644 --- a/tests/ImageSharp.Benchmarks/Image/EncodeJpeg.cs +++ b/tests/ImageSharp.Benchmarks/Image/EncodeJpeg.cs @@ -12,7 +12,7 @@ namespace ImageSharp.Benchmarks.Image using BenchmarkDotNet.Attributes; using CoreImage = ImageSharp.Image; - public class EncodeJpeg + public class EncodeJpeg : BenchmarkBase { // System.Drawing needs this. private Stream bmpStream; diff --git a/tests/ImageSharp.Benchmarks/Image/EncodeJpegMultiple.cs b/tests/ImageSharp.Benchmarks/Image/EncodeJpegMultiple.cs index d6af8c842..6762ca8d8 100644 --- a/tests/ImageSharp.Benchmarks/Image/EncodeJpegMultiple.cs +++ b/tests/ImageSharp.Benchmarks/Image/EncodeJpegMultiple.cs @@ -15,11 +15,11 @@ public class EncodeJpegMultiple : MultiImageBenchmarkBase.WithImagesPreloaded { protected override IEnumerable InputImageSubfolders => new[] - { - "Formats/Bmp/", - "Formats/Jpg/baseline" - }; - + { + "Formats/Bmp/", + "Formats/Jpg/baseline" + }; + protected override IEnumerable FileFilters => new[] { "*.bmp", "*.jpg" }; [Benchmark(Description = "EncodeJpegMultiple - ImageSharp")] diff --git a/tests/ImageSharp.Benchmarks/Image/EncodePng.cs b/tests/ImageSharp.Benchmarks/Image/EncodePng.cs index 52d953775..44ffba679 100644 --- a/tests/ImageSharp.Benchmarks/Image/EncodePng.cs +++ b/tests/ImageSharp.Benchmarks/Image/EncodePng.cs @@ -12,7 +12,7 @@ namespace ImageSharp.Benchmarks.Image using BenchmarkDotNet.Attributes; using CoreImage = ImageSharp.Image; - public class EncodePng + public class EncodePng : BenchmarkBase { // System.Drawing needs this. private Stream bmpStream; diff --git a/tests/ImageSharp.Benchmarks/Image/GetSetPixel.cs b/tests/ImageSharp.Benchmarks/Image/GetSetPixel.cs index d09531e75..ffd476007 100644 --- a/tests/ImageSharp.Benchmarks/Image/GetSetPixel.cs +++ b/tests/ImageSharp.Benchmarks/Image/GetSetPixel.cs @@ -13,7 +13,7 @@ namespace ImageSharp.Benchmarks.Image using CoreImage = ImageSharp.Image; using SystemColor = System.Drawing.Color; - public class GetSetPixel + public class GetSetPixel : BenchmarkBase { [Benchmark(Baseline = true, Description = "System.Drawing GetSet pixel")] public SystemColor ResizeSystemDrawing() diff --git a/tests/ImageSharp.Benchmarks/Image/MultiImageBenchmarkBase.cs b/tests/ImageSharp.Benchmarks/Image/MultiImageBenchmarkBase.cs index d605bf931..5870840c1 100644 --- a/tests/ImageSharp.Benchmarks/Image/MultiImageBenchmarkBase.cs +++ b/tests/ImageSharp.Benchmarks/Image/MultiImageBenchmarkBase.cs @@ -11,7 +11,7 @@ using Image = ImageSharp.Image; - public abstract class MultiImageBenchmarkBase + public abstract class MultiImageBenchmarkBase : BenchmarkBase { protected Dictionary FileNamesToBytes = new Dictionary(); @@ -26,7 +26,7 @@ LargeImagesOnly } - + [Params(TestingMode.All, TestingMode.SmallImagesOnly, TestingMode.LargeImagesOnly)] public TestingMode Mode { get; set; } @@ -62,7 +62,7 @@ this.EnumeratePairsByBenchmarkSettings( this.FileNamesToBytes, arr => arr.Length < this.LargeImageThresholdInBytes); - + protected abstract IEnumerable InputImageSubfolders { get; } [Setup] @@ -122,7 +122,7 @@ using (var ms1 = new MemoryStream(bytes)) { this.FileNamesToImageSharpImages[fn] = new Image(ms1); - + } this.FileNamesToSystemDrawingImages[fn] = new Bitmap(new MemoryStream(bytes)); @@ -178,7 +178,7 @@ } } - + } diff --git a/tests/ImageSharp.Benchmarks/Program.cs b/tests/ImageSharp.Benchmarks/Program.cs index 7ecf63274..8c609f015 100644 --- a/tests/ImageSharp.Benchmarks/Program.cs +++ b/tests/ImageSharp.Benchmarks/Program.cs @@ -7,6 +7,8 @@ namespace ImageSharp.Benchmarks { using BenchmarkDotNet.Running; + using ImageSharp.Formats; + public class Program { /// diff --git a/tests/ImageSharp.Benchmarks/Samplers/Crop.cs b/tests/ImageSharp.Benchmarks/Samplers/Crop.cs index c723ff0c7..3a98569e7 100644 --- a/tests/ImageSharp.Benchmarks/Samplers/Crop.cs +++ b/tests/ImageSharp.Benchmarks/Samplers/Crop.cs @@ -13,7 +13,7 @@ namespace ImageSharp.Benchmarks using CoreImage = ImageSharp.Image; using CoreSize = ImageSharp.Size; - public class Crop + public class Crop : BenchmarkBase { [Benchmark(Baseline = true, Description = "System.Drawing Crop")] public Size CropSystemDrawing() diff --git a/tests/ImageSharp.Benchmarks/Samplers/DetectEdges.cs b/tests/ImageSharp.Benchmarks/Samplers/DetectEdges.cs index eb3e5cb8e..b02b46f66 100644 --- a/tests/ImageSharp.Benchmarks/Samplers/DetectEdges.cs +++ b/tests/ImageSharp.Benchmarks/Samplers/DetectEdges.cs @@ -11,7 +11,7 @@ namespace ImageSharp.Benchmarks using CoreImage = ImageSharp.Image; - public class DetectEdges + public class DetectEdges : BenchmarkBase { private CoreImage image; diff --git a/tests/ImageSharp.Benchmarks/Samplers/Resize.cs b/tests/ImageSharp.Benchmarks/Samplers/Resize.cs index a65e62e7c..10fe1fc75 100644 --- a/tests/ImageSharp.Benchmarks/Samplers/Resize.cs +++ b/tests/ImageSharp.Benchmarks/Samplers/Resize.cs @@ -12,7 +12,7 @@ namespace ImageSharp.Benchmarks using CoreSize = ImageSharp.Size; using CoreImage = ImageSharp.Image; - public class Resize + public class Resize : BenchmarkBase { [Benchmark(Baseline = true, Description = "System.Drawing Resize")] public Size ResizeSystemDrawing()