Skip to content

Commit 28bbbe4

Browse files
Merge pull request #1479 from SixLabors/js/cleanup-benchmarks
Benchmark Code Quality Cleanup
2 parents 29a5b7a + 53be61e commit 28bbbe4

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

53 files changed

+473
-694
lines changed

tests/ImageSharp.Benchmarks/BenchmarkBase.cs

Lines changed: 0 additions & 19 deletions
This file was deleted.

tests/ImageSharp.Benchmarks/Codecs/DecodeBmp.cs

Lines changed: 11 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,13 @@
1010

1111
namespace SixLabors.ImageSharp.Benchmarks.Codecs
1212
{
13-
[Config(typeof(Config.ShortClr))]
14-
public class DecodeBmp : BenchmarkBase
13+
[Config(typeof(Config.ShortMultiFramework))]
14+
public class DecodeBmp
1515
{
1616
private byte[] bmpBytes;
1717

18-
private string TestImageFullPath => Path.Combine(TestEnvironment.InputImagesDirectoryFullPath, this.TestImage);
18+
private string TestImageFullPath
19+
=> Path.Combine(TestEnvironment.InputImagesDirectoryFullPath, this.TestImage);
1920

2021
[GlobalSetup]
2122
public void ReadImages()
@@ -32,25 +33,17 @@ public void ReadImages()
3233
[Benchmark(Baseline = true, Description = "System.Drawing Bmp")]
3334
public SDSize BmpSystemDrawing()
3435
{
35-
using (var memoryStream = new MemoryStream(this.bmpBytes))
36-
{
37-
using (var image = SDImage.FromStream(memoryStream))
38-
{
39-
return image.Size;
40-
}
41-
}
36+
using var memoryStream = new MemoryStream(this.bmpBytes);
37+
using var image = SDImage.FromStream(memoryStream);
38+
return image.Size;
4239
}
4340

4441
[Benchmark(Description = "ImageSharp Bmp")]
45-
public Size BmpCore()
42+
public Size BmpImageSharp()
4643
{
47-
using (var memoryStream = new MemoryStream(this.bmpBytes))
48-
{
49-
using (var image = Image.Load<Rgba32>(memoryStream))
50-
{
51-
return new Size(image.Width, image.Height);
52-
}
53-
}
44+
using var memoryStream = new MemoryStream(this.bmpBytes);
45+
using var image = Image.Load<Rgba32>(memoryStream);
46+
return new Size(image.Width, image.Height);
5447
}
5548
}
5649
}

tests/ImageSharp.Benchmarks/Codecs/DecodeFilteredPng.cs

Lines changed: 18 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,11 @@
66
using BenchmarkDotNet.Attributes;
77
using SixLabors.ImageSharp.PixelFormats;
88
using SixLabors.ImageSharp.Tests;
9-
using CoreSize = SixLabors.ImageSharp.Size;
109

1110
namespace SixLabors.ImageSharp.Benchmarks.Codecs
1211
{
13-
[Config(typeof(Config.ShortClr))]
14-
public class DecodeFilteredPng : BenchmarkBase
12+
[Config(typeof(Config.ShortMultiFramework))]
13+
public class DecodeFilteredPng
1514
{
1615
private byte[] filter0;
1716
private byte[] filter1;
@@ -30,44 +29,33 @@ public void ReadImages()
3029
}
3130

3231
[Benchmark(Baseline = true, Description = "None-filtered PNG file")]
33-
public CoreSize PngFilter0()
34-
{
35-
return LoadPng(this.filter0);
36-
}
32+
public Size PngFilter0()
33+
=> LoadPng(this.filter0);
3734

3835
[Benchmark(Description = "Sub-filtered PNG file")]
39-
public CoreSize PngFilter1()
40-
{
41-
return LoadPng(this.filter1);
42-
}
36+
public Size PngFilter1()
37+
=> LoadPng(this.filter1);
4338

4439
[Benchmark(Description = "Up-filtered PNG file")]
45-
public CoreSize PngFilter2()
46-
{
47-
return LoadPng(this.filter2);
48-
}
40+
public Size PngFilter2()
41+
=> LoadPng(this.filter2);
4942

5043
[Benchmark(Description = "Average-filtered PNG file")]
51-
public CoreSize PngFilter3()
52-
{
53-
return LoadPng(this.filter3);
54-
}
44+
public Size PngFilter3()
45+
=> LoadPng(this.filter3);
5546

5647
[Benchmark(Description = "Paeth-filtered PNG file")]
57-
public CoreSize PngFilter4()
58-
{
59-
return LoadPng(this.filter4);
60-
}
48+
public Size PngFilter4()
49+
=> LoadPng(this.filter4);
6150

6251
[MethodImpl(MethodImplOptions.AggressiveInlining)]
63-
private static CoreSize LoadPng(byte[] bytes)
52+
private static Size LoadPng(byte[] bytes)
6453
{
65-
using (var image = Image.Load<Rgba32>(bytes))
66-
{
67-
return image.Size();
68-
}
54+
using var image = Image.Load<Rgba32>(bytes);
55+
return image.Size();
6956
}
7057

71-
private static string TestImageFullPath(string path) => Path.Combine(TestEnvironment.InputImagesDirectoryFullPath, path);
58+
private static string TestImageFullPath(string path)
59+
=> Path.Combine(TestEnvironment.InputImagesDirectoryFullPath, path);
7260
}
73-
}
61+
}

tests/ImageSharp.Benchmarks/Codecs/DecodeGif.cs

Lines changed: 11 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,13 @@
1010

1111
namespace SixLabors.ImageSharp.Benchmarks.Codecs
1212
{
13-
[Config(typeof(Config.ShortClr))]
14-
public class DecodeGif : BenchmarkBase
13+
[Config(typeof(Config.ShortMultiFramework))]
14+
public class DecodeGif
1515
{
1616
private byte[] gifBytes;
1717

18-
private string TestImageFullPath => Path.Combine(TestEnvironment.InputImagesDirectoryFullPath, this.TestImage);
18+
private string TestImageFullPath
19+
=> Path.Combine(TestEnvironment.InputImagesDirectoryFullPath, this.TestImage);
1920

2021
[GlobalSetup]
2122
public void ReadImages()
@@ -32,25 +33,17 @@ public void ReadImages()
3233
[Benchmark(Baseline = true, Description = "System.Drawing Gif")]
3334
public SDSize GifSystemDrawing()
3435
{
35-
using (var memoryStream = new MemoryStream(this.gifBytes))
36-
{
37-
using (var image = SDImage.FromStream(memoryStream))
38-
{
39-
return image.Size;
40-
}
41-
}
36+
using var memoryStream = new MemoryStream(this.gifBytes);
37+
using var image = SDImage.FromStream(memoryStream);
38+
return image.Size;
4239
}
4340

4441
[Benchmark(Description = "ImageSharp Gif")]
45-
public Size GifCore()
42+
public Size GifImageSharp()
4643
{
47-
using (var memoryStream = new MemoryStream(this.gifBytes))
48-
{
49-
using (var image = Image.Load<Rgba32>(memoryStream))
50-
{
51-
return new Size(image.Width, image.Height);
52-
}
53-
}
44+
using var memoryStream = new MemoryStream(this.gifBytes);
45+
using var image = Image.Load<Rgba32>(memoryStream);
46+
return new Size(image.Width, image.Height);
5447
}
5548
}
5649
}

tests/ImageSharp.Benchmarks/Codecs/DecodePng.cs

Lines changed: 11 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,13 @@
1010

1111
namespace SixLabors.ImageSharp.Benchmarks.Codecs
1212
{
13-
[Config(typeof(Config.ShortClr))]
14-
public class DecodePng : BenchmarkBase
13+
[Config(typeof(Config.ShortMultiFramework))]
14+
public class DecodePng
1515
{
1616
private byte[] pngBytes;
1717

18-
private string TestImageFullPath => Path.Combine(TestEnvironment.InputImagesDirectoryFullPath, this.TestImage);
18+
private string TestImageFullPath
19+
=> Path.Combine(TestEnvironment.InputImagesDirectoryFullPath, this.TestImage);
1920

2021
[Params(TestImages.Png.Splash)]
2122
public string TestImage { get; set; }
@@ -32,25 +33,17 @@ public void ReadImages()
3233
[Benchmark(Baseline = true, Description = "System.Drawing Png")]
3334
public SDSize PngSystemDrawing()
3435
{
35-
using (var memoryStream = new MemoryStream(this.pngBytes))
36-
{
37-
using (var image = SDImage.FromStream(memoryStream))
38-
{
39-
return image.Size;
40-
}
41-
}
36+
using var memoryStream = new MemoryStream(this.pngBytes);
37+
using var image = SDImage.FromStream(memoryStream);
38+
return image.Size;
4239
}
4340

4441
[Benchmark(Description = "ImageSharp Png")]
45-
public Size PngCore()
42+
public Size PngImageSharp()
4643
{
47-
using (var memoryStream = new MemoryStream(this.pngBytes))
48-
{
49-
using (var image = Image.Load<Rgba32>(memoryStream))
50-
{
51-
return image.Size();
52-
}
53-
}
44+
using var memoryStream = new MemoryStream(this.pngBytes);
45+
using var image = Image.Load<Rgba32>(memoryStream);
46+
return image.Size();
5447
}
5548
}
5649
}

tests/ImageSharp.Benchmarks/Codecs/DecodeTga.cs

Lines changed: 11 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
using System.IO;
66
using System.Threading;
77
using BenchmarkDotNet.Attributes;
8-
98
using ImageMagick;
109
using Pfim;
1110
using SixLabors.ImageSharp.Formats.Tga;
@@ -14,8 +13,8 @@
1413

1514
namespace SixLabors.ImageSharp.Benchmarks.Codecs
1615
{
17-
[Config(typeof(Config.ShortClr))]
18-
public class DecodeTga : BenchmarkBase
16+
[Config(typeof(Config.ShortMultiFramework))]
17+
public class DecodeTga
1918
{
2019
private string TestImageFullPath => Path.Combine(TestEnvironment.InputImagesDirectoryFullPath, this.TestImage);
2120

@@ -28,47 +27,36 @@ public class DecodeTga : BenchmarkBase
2827

2928
[GlobalSetup]
3029
public void SetupData()
31-
{
32-
this.data = File.ReadAllBytes(this.TestImageFullPath);
33-
}
30+
=> this.data = File.ReadAllBytes(this.TestImageFullPath);
3431

3532
[Benchmark(Baseline = true, Description = "ImageMagick Tga")]
3633
public int TgaImageMagick()
3734
{
3835
var settings = new MagickReadSettings { Format = MagickFormat.Tga };
39-
using (var image = new MagickImage(new MemoryStream(this.data), settings))
40-
{
41-
return image.Width;
42-
}
36+
using var image = new MagickImage(new MemoryStream(this.data), settings);
37+
return image.Width;
4338
}
4439

4540
[Benchmark(Description = "ImageSharp Tga")]
46-
public int TgaCore()
41+
public int TgaImageSharp()
4742
{
48-
using (var image = Image.Load<Bgr24>(this.data, new TgaDecoder()))
49-
{
50-
return image.Width;
51-
}
43+
using var image = Image.Load<Bgr24>(this.data, new TgaDecoder());
44+
return image.Width;
5245
}
5346

5447
[Benchmark(Description = "Pfim Tga")]
5548
public int TgaPfim()
5649
{
57-
using (var image = Targa.Create(this.data, this.pfimConfig))
58-
{
59-
return image.Width;
60-
}
50+
using var image = Targa.Create(this.data, this.pfimConfig);
51+
return image.Width;
6152
}
6253

6354
private class PfimAllocator : IImageAllocator
6455
{
6556
private int rented;
6657
private readonly ArrayPool<byte> shared = ArrayPool<byte>.Shared;
6758

68-
public byte[] Rent(int size)
69-
{
70-
return this.shared.Rent(size);
71-
}
59+
public byte[] Rent(int size) => this.shared.Rent(size);
7260

7361
public void Return(byte[] data)
7462
{

tests/ImageSharp.Benchmarks/Codecs/EncodeBmp.cs

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Copyright (c) Six Labors.
1+
// Copyright (c) Six Labors.
22
// Licensed under the Apache License, Version 2.0.
33

44
using System.Drawing.Imaging;
@@ -10,8 +10,8 @@
1010

1111
namespace SixLabors.ImageSharp.Benchmarks.Codecs
1212
{
13-
[Config(typeof(Config.ShortClr))]
14-
public class EncodeBmp : BenchmarkBase
13+
[Config(typeof(Config.ShortMultiFramework))]
14+
public class EncodeBmp
1515
{
1616
private Stream bmpStream;
1717
private SDImage bmpDrawing;
@@ -33,26 +33,23 @@ public void ReadImages()
3333
public void Cleanup()
3434
{
3535
this.bmpStream.Dispose();
36+
this.bmpStream = null;
3637
this.bmpCore.Dispose();
3738
this.bmpDrawing.Dispose();
3839
}
3940

4041
[Benchmark(Baseline = true, Description = "System.Drawing Bmp")]
4142
public void BmpSystemDrawing()
4243
{
43-
using (var memoryStream = new MemoryStream())
44-
{
45-
this.bmpDrawing.Save(memoryStream, ImageFormat.Bmp);
46-
}
44+
using var memoryStream = new MemoryStream();
45+
this.bmpDrawing.Save(memoryStream, ImageFormat.Bmp);
4746
}
4847

4948
[Benchmark(Description = "ImageSharp Bmp")]
50-
public void BmpCore()
49+
public void BmpImageSharp()
5150
{
52-
using (var memoryStream = new MemoryStream())
53-
{
54-
this.bmpCore.SaveAsBmp(memoryStream);
55-
}
51+
using var memoryStream = new MemoryStream();
52+
this.bmpCore.SaveAsBmp(memoryStream);
5653
}
5754
}
58-
}
55+
}

0 commit comments

Comments
 (0)