diff --git a/tests/ImageSharp.Benchmarks/Image/DecodeJpegMultiple.cs b/tests/ImageSharp.Benchmarks/Image/DecodeJpegMultiple.cs index 497b20734..5c69d560e 100644 --- a/tests/ImageSharp.Benchmarks/Image/DecodeJpegMultiple.cs +++ b/tests/ImageSharp.Benchmarks/Image/DecodeJpegMultiple.cs @@ -1,4 +1,9 @@ -namespace ImageSharp.Benchmarks.Image +// +// Copyright (c) James Jackson-South and contributors. +// Licensed under the Apache License, Version 2.0. +// + +namespace ImageSharp.Benchmarks.Image { using System; using System.Collections.Generic; @@ -13,17 +18,23 @@ public class DecodeJpegMultiple { + private const string Folder = "../ImageSharp.Tests/TestImages/Formats/Jpg/"; + private Dictionary fileNamesToBytes; public enum JpegTestingMode { All, + SmallImagesOnly, + LargeImagesOnly, + CalliphoraOnly, } - [Params(JpegTestingMode.All, JpegTestingMode.SmallImagesOnly, JpegTestingMode.LargeImagesOnly, JpegTestingMode.CalliphoraOnly)] + [Params(JpegTestingMode.All, JpegTestingMode.SmallImagesOnly, JpegTestingMode.LargeImagesOnly, + JpegTestingMode.CalliphoraOnly)] public JpegTestingMode Mode { get; set; } private IEnumerable> RequestedImages @@ -31,7 +42,7 @@ get { int thresholdInBytes = 100000; - + switch (this.Mode) { case JpegTestingMode.All: @@ -41,38 +52,13 @@ case JpegTestingMode.LargeImagesOnly: return this.fileNamesToBytes.Where(kv => kv.Value.Length >= thresholdInBytes); case JpegTestingMode.CalliphoraOnly: - return new[] { - this.fileNamesToBytes.First(kv => kv.Key.ToLower().Contains("calliphora")) - }; + return new[] { this.fileNamesToBytes.First(kv => kv.Key.ToLower().Contains("calliphora")) }; default: throw new ArgumentOutOfRangeException(); } } } - -#if BENCHMARK46 - private const string Folder = "../../../ImageSharp.Tests/TestImages/Formats/Jpg/"; -#else - private const string Folder = "../ImageSharp.Tests/TestImages/Formats/Jpg/"; -#endif - - [Setup] - public void ReadImages() - { - if (this.fileNamesToBytes != null) return; - - // Decoder does not work for these images (yet?): - string[] filterWords = { "testimgari", "corrupted", "gray", "longvertical" }; - - var allFiles = Directory.EnumerateFiles(Folder, "*.jpg", SearchOption.AllDirectories) - .Where(fn => !filterWords.Any(w => fn.ToLower().Contains(w))) - .ToArray(); - - this.fileNamesToBytes = allFiles.ToDictionary(fn => fn, File.ReadAllBytes); - } - - [Benchmark(Description = "DecodeJpegMultiple - ImageSharp")] public ImageSharpSize JpegImageSharp() { @@ -81,7 +67,7 @@ { using (MemoryStream memoryStream = new MemoryStream(kv.Value)) { - Image image = new ImageSharp.Image(memoryStream); + Image image = new Image(memoryStream); lastSize = new ImageSharpSize(image.Width, image.Height); } } @@ -92,7 +78,7 @@ [Benchmark(Baseline = true, Description = "DecodeJpegMultiple - System.Drawing")] public Size JpegSystemDrawing() { - Size lastSize = new System.Drawing.Size(); + Size lastSize = new Size(); foreach (var kv in this.RequestedImages) { using (MemoryStream memoryStream = new MemoryStream(kv.Value)) @@ -107,5 +93,20 @@ return lastSize; } + [Setup] + public void ReadImages() + { + if (this.fileNamesToBytes != null) return; + + // Decoder does not work for these images (yet?): + string[] filterWords = { "testimgari", "corrupted", "gray", "longvertical" }; + + var allFiles = + Directory.EnumerateFiles(Folder, "*.jpg", SearchOption.AllDirectories) + .Where(fn => !filterWords.Any(w => fn.ToLower().Contains(w))) + .ToArray(); + + this.fileNamesToBytes = allFiles.ToDictionary(fn => fn, File.ReadAllBytes); + } } } \ No newline at end of file