Browse Source

add ability to filter for Baseline/Progressive

pull/1687/head
Anton Firszov 5 years ago
parent
commit
20040bd89a
  1. 11
      tests/ImageSharp.Benchmarks/LoadResizeSave/LoadResizeSaveStressBenchmarks.cs
  2. 53
      tests/ImageSharp.Benchmarks/LoadResizeSave/LoadResizeSaveStressRunner.cs
  3. 7
      tests/ImageSharp.Tests.ProfilingSandbox/LoadResizeSaveParallelMemoryStress.cs

11
tests/ImageSharp.Benchmarks/LoadResizeSave/LoadResizeSaveStressBenchmarks.cs

@ -13,11 +13,18 @@ namespace SixLabors.ImageSharp.Benchmarks.LoadResizeSave
{ {
private LoadResizeSaveStressRunner runner; private LoadResizeSaveStressRunner runner;
// private const JpegKind Filter = JpegKind.Progressive;
private const JpegKind Filter = JpegKind.Any;
[GlobalSetup] [GlobalSetup]
public void Setup() public void Setup()
{ {
this.runner = new LoadResizeSaveStressRunner() { ImageCount = Environment.ProcessorCount }; this.runner = new LoadResizeSaveStressRunner()
Console.WriteLine("ImageCount:" + this.runner.ImageCount); {
ImageCount = Environment.ProcessorCount,
Filter = Filter
};
Console.WriteLine($"ImageCount: {this.runner.ImageCount} Filter: {Filter}");
this.runner.Init(); this.runner.Init();
} }

53
tests/ImageSharp.Benchmarks/LoadResizeSave/LoadResizeSaveStressRunner.cs

@ -22,6 +22,13 @@ using SystemDrawingImage = System.Drawing.Image;
namespace SixLabors.ImageSharp.Benchmarks.LoadResizeSave namespace SixLabors.ImageSharp.Benchmarks.LoadResizeSave
{ {
public enum JpegKind
{
Baseline = 1,
Progressive = 2,
Any = Baseline | Progressive
}
public class LoadResizeSaveStressRunner public class LoadResizeSaveStressRunner
{ {
private const int ThumbnailSize = 150; private const int ThumbnailSize = 150;
@ -49,6 +56,43 @@ namespace SixLabors.ImageSharp.Benchmarks.LoadResizeSave
public int MaxDegreeOfParallelism { get; set; } = -1; public int MaxDegreeOfParallelism { get; set; } = -1;
public JpegKind Filter { get; set; }
private static readonly string[] ProgressiveFiles =
{
"ancyloscelis-apiformis-m-paraguay-face_2014-08-08-095255-zs-pmax_15046500892_o.jpg",
"acanthopus-excellens-f-face-brasil_2014-08-06-132105-zs-pmax_14792513890_o.jpg",
"bee-ceratina-monster-f-ukraine-face_2014-08-09-123342-zs-pmax_15068816101_o.jpg",
"bombus-eximias-f-tawain-face_2014-08-10-094449-zs-pmax_15155452565_o.jpg",
"ceratina-14507h1-m-vietnam-face_2014-08-09-163218-zs-pmax_15096718245_o.jpg",
"ceratina-buscki-f-panama-face_2014-11-25-140413-zs-pmax_15923736081_o.jpg",
"ceratina-tricolor-f-panama-face2_2014-08-29-160402-zs-pmax_14906318297_o.jpg",
"ceratina-tricolor-f-panama-face_2014-08-29-160001-zs-pmax_14906300608_o.jpg",
"ceratina-tricolor-m-panama-face_2014-08-29-162821-zs-pmax_15069878876_o.jpg",
"coelioxys-cayennensis-f-argentina-face_2014-08-09-171932-zs-pmax_14914109737_o.jpg",
"ctenocolletes-smaragdinus-f-australia-face_2014-08-08-134825-zs-pmax_14865269708_o.jpg",
"diphaglossa-gayi-f-face-chile_2014-08-04-180547-zs-pmax_14918891472_o.jpg",
"hylaeus-nubilosus-f-australia-face_2014-08-14-121100-zs-pmax_15049602149_o.jpg",
"hypanthidioides-arenaria-f-face-brazil_2014-08-06-061201-zs-pmax_14770371360_o.jpg",
"megachile-chalicodoma-species-f-morocco-face_2014-08-14-124840-zs-pmax_15217084686_o.jpg",
"megachile-species-f-15266b06-face-kenya_2014-08-06-161044-zs-pmax_14994381392_o.jpg",
"megalopta-genalis-m-face-panama-barocolorado_2014-09-19-164939-zs-pmax_15121397069_o.jpg",
"melitta-haemorrhoidalis-m--england-face_2014-11-02-014026-zs-pmax-recovered_15782113675_o.jpg",
"nomia-heart-antennae-m-15266b02-face-kenya_2014-08-04-195216-zs-pmax_14922843736_o.jpg",
"nomia-species-m-oman-face_2014-08-09-192602-zs-pmax_15128732411_o.jpg",
"nomia-spiney-m-vietnam-face_2014-08-09-213126-zs-pmax_15191389705_o.jpg",
"ochreriades-fasciata-m-face-israel_2014-08-06-084407-zs-pmax_14965515571_o.jpg",
"osmia-brevicornisf-jaw-kyrgystan_2014-08-08-103333-zs-pmax_14865267787_o.jpg",
"pachyanthidium-aff-benguelense-f-6711f07-face_2014-08-07-112830-zs-pmax_15018069042_o.jpg",
"pachymelus-bicolor-m-face-madagascar_2014-08-06-134930-zs-pmax_14801667477_o.jpg",
"psaenythia-species-m-argentina-face_2014-08-07-163754-zs-pmax_15007018976_o.jpg",
"stingless-bee-1-f-face-peru_2014-07-30-123322-zs-pmax_15633797167_o.jpg",
"triepeolus-simplex-m-face-md-kent-county_2014-07-22-100937-zs-pmax_14805405233_o.jpg",
"washed-megachile-f-face-chile_2014-08-06-103414-zs-pmax_14977843152_o.jpg",
"xylocopa-balck-violetwing-f-kyrgystan-angle_2014-08-09-182433-zs-pmax_15123416061_o.jpg",
"xylocopa-india-yellow-m-india-face_2014-08-10-111701-zs-pmax_15166559172_o.jpg",
};
public void Init() public void Init()
{ {
if (RuntimeInformation.OSArchitecture is Architecture.X86 or Architecture.X64) if (RuntimeInformation.OSArchitecture is Architecture.X86 or Architecture.X64)
@ -64,10 +108,17 @@ namespace SixLabors.ImageSharp.Benchmarks.LoadResizeSave
} }
// Get at most this.ImageCount images from there // Get at most this.ImageCount images from there
this.Images = Directory.EnumerateFiles(imageDirectory).Take(this.ImageCount).ToArray(); bool FilterFunc(string f) => this.Filter.HasFlag(GetJpegType(f));
this.Images = Directory.EnumerateFiles(imageDirectory).Where(FilterFunc).Take(this.ImageCount).ToArray();
// Create the output directory next to the images directory // Create the output directory next to the images directory
this.outputDirectory = TestEnvironment.CreateOutputDirectory("MemoryStress"); this.outputDirectory = TestEnvironment.CreateOutputDirectory("MemoryStress");
static JpegKind GetJpegType(string f) =>
ProgressiveFiles.Any(p => f.EndsWith(p, StringComparison.OrdinalIgnoreCase))
? JpegKind.Progressive
: JpegKind.Baseline;
} }
public void ForEachImageParallel(Action<string> action) => Parallel.ForEach( public void ForEachImageParallel(Action<string> action) => Parallel.ForEach(

7
tests/ImageSharp.Tests.ProfilingSandbox/LoadResizeSaveParallelMemoryStress.cs

@ -15,7 +15,11 @@ namespace SixLabors.ImageSharp.Tests.ProfilingSandbox
private LoadResizeSaveParallelMemoryStress() private LoadResizeSaveParallelMemoryStress()
{ {
this.benchmarks = new LoadResizeSaveStressRunner(); this.benchmarks = new LoadResizeSaveStressRunner()
{
// MaxDegreeOfParallelism = 10,
// Filter = JpegKind.Baseline
};
this.benchmarks.Init(); this.benchmarks.Init();
} }
@ -43,7 +47,6 @@ namespace SixLabors.ImageSharp.Tests.ProfilingSandbox
try try
{ {
var lrs = new LoadResizeSaveParallelMemoryStress(); var lrs = new LoadResizeSaveParallelMemoryStress();
lrs.benchmarks.MaxDegreeOfParallelism = 10;
Console.WriteLine($"\nEnvironment.ProcessorCount={Environment.ProcessorCount}"); Console.WriteLine($"\nEnvironment.ProcessorCount={Environment.ProcessorCount}");
Console.WriteLine($"Running with MaxDegreeOfParallelism={lrs.benchmarks.MaxDegreeOfParallelism} ..."); Console.WriteLine($"Running with MaxDegreeOfParallelism={lrs.benchmarks.MaxDegreeOfParallelism} ...");

Loading…
Cancel
Save