mirror of https://github.com/SixLabors/ImageSharp
11 changed files with 150 additions and 62 deletions
@ -0,0 +1,111 @@ |
|||||
|
namespace ImageSharp.Benchmarks.Image |
||||
|
{ |
||||
|
using System; |
||||
|
using System.Collections.Generic; |
||||
|
using System.Drawing; |
||||
|
using System.IO; |
||||
|
using System.Linq; |
||||
|
|
||||
|
using BenchmarkDotNet.Attributes; |
||||
|
|
||||
|
using Image = ImageSharp.Image; |
||||
|
using ImageSharpSize = ImageSharp.Size; |
||||
|
|
||||
|
public class DecodeJpegMultiple |
||||
|
{ |
||||
|
private Dictionary<string, byte[]> fileNamesToBytes; |
||||
|
|
||||
|
public enum JpegTestingMode |
||||
|
{ |
||||
|
All, |
||||
|
SmallImagesOnly, |
||||
|
LargeImagesOnly, |
||||
|
CalliphoraOnly, |
||||
|
} |
||||
|
|
||||
|
[Params(JpegTestingMode.All, JpegTestingMode.SmallImagesOnly, JpegTestingMode.LargeImagesOnly, JpegTestingMode.CalliphoraOnly)] |
||||
|
public JpegTestingMode Mode { get; set; } |
||||
|
|
||||
|
private IEnumerable<KeyValuePair<string, byte[]>> RequestedImages |
||||
|
{ |
||||
|
get |
||||
|
{ |
||||
|
int thresholdInBytes = 100000; |
||||
|
|
||||
|
switch (this.Mode) |
||||
|
{ |
||||
|
case JpegTestingMode.All: |
||||
|
return this.fileNamesToBytes; |
||||
|
case JpegTestingMode.SmallImagesOnly: |
||||
|
return this.fileNamesToBytes.Where(kv => kv.Value.Length < thresholdInBytes); |
||||
|
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")) |
||||
|
}; |
||||
|
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() |
||||
|
{ |
||||
|
ImageSharpSize lastSize = new ImageSharpSize(); |
||||
|
foreach (var kv in this.RequestedImages) |
||||
|
{ |
||||
|
using (MemoryStream memoryStream = new MemoryStream(kv.Value)) |
||||
|
{ |
||||
|
Image image = new ImageSharp.Image(memoryStream); |
||||
|
lastSize = new ImageSharpSize(image.Width, image.Height); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
return lastSize; |
||||
|
} |
||||
|
|
||||
|
[Benchmark(Baseline = true, Description = "DecodeJpegMultiple - System.Drawing")] |
||||
|
public Size JpegSystemDrawing() |
||||
|
{ |
||||
|
Size lastSize = new System.Drawing.Size(); |
||||
|
foreach (var kv in this.RequestedImages) |
||||
|
{ |
||||
|
using (MemoryStream memoryStream = new MemoryStream(kv.Value)) |
||||
|
{ |
||||
|
using (System.Drawing.Image image = System.Drawing.Image.FromStream(memoryStream)) |
||||
|
{ |
||||
|
lastSize = image.Size; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
return lastSize; |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
} |
||||
@ -1,54 +0,0 @@ |
|||||
using System.Numerics; |
|
||||
using ImageSharp.Formats; |
|
||||
using Xunit; |
|
||||
using Xunit.Abstractions; |
|
||||
|
|
||||
namespace ImageSharp.Tests.Formats.Jpg |
|
||||
{ |
|
||||
public class DctTests : UtilityTestClassBase |
|
||||
{ |
|
||||
public DctTests(ITestOutputHelper output) |
|
||||
: base(output) |
|
||||
{ |
|
||||
} |
|
||||
|
|
||||
[Fact] |
|
||||
public void Mennyi() |
|
||||
{ |
|
||||
Output.WriteLine(Vector.IsHardwareAccelerated.ToString()); |
|
||||
Output.WriteLine(Vector<float>.Count.ToString()); |
|
||||
} |
|
||||
|
|
||||
[Fact] |
|
||||
public void CheckTestData() |
|
||||
{ |
|
||||
var data = Create8x8FloatData(); |
|
||||
|
|
||||
Print8x8Data(data); |
|
||||
} |
|
||||
|
|
||||
[Fact] |
|
||||
public void Transpose8x8() |
|
||||
{ |
|
||||
var data = Create8x8FloatData(); |
|
||||
|
|
||||
MutableSpan<float> result = new MutableSpan<float>(64); |
|
||||
|
|
||||
ReferenceImplementations.Transpose8x8(data, result); |
|
||||
|
|
||||
Print8x8Data(result.Data); |
|
||||
} |
|
||||
|
|
||||
[Fact] |
|
||||
public void Transpose8x8_Inplace() |
|
||||
{ |
|
||||
var data = Create8x8FloatData(); |
|
||||
|
|
||||
ReferenceImplementations.Transpose8x8(data); |
|
||||
|
|
||||
Print8x8Data(data); |
|
||||
} |
|
||||
|
|
||||
|
|
||||
} |
|
||||
} |
|
||||
@ -0,0 +1,3 @@ |
|||||
|
version https://git-lfs.github.com/spec/v1 |
||||
|
oid sha256:06239c321880733aad329338a647b565bf7321d74523ea3fc3b6ced45d7b2058 |
||||
|
size 49977 |
||||
@ -0,0 +1,3 @@ |
|||||
|
version https://git-lfs.github.com/spec/v1 |
||||
|
oid sha256:ff20d5d0ad75e648b1ea388f65fb41d02bd2a049cd22ef86a4648b357bde94ce |
||||
|
size 540458 |
||||
@ -0,0 +1,3 @@ |
|||||
|
version https://git-lfs.github.com/spec/v1 |
||||
|
oid sha256:f4fc842ed15a8c451d25f2595d68b533777b19f10748d961ab2b0afcc51bcc07 |
||||
|
size 45066 |
||||
@ -0,0 +1,3 @@ |
|||||
|
version https://git-lfs.github.com/spec/v1 |
||||
|
oid sha256:223f9ca11722e7eccae9eadb158fa2c7bf806ed0aa6ee4390a96df7770035ba4 |
||||
|
size 768608 |
||||
@ -0,0 +1,3 @@ |
|||||
|
version https://git-lfs.github.com/spec/v1 |
||||
|
oid sha256:89c632bbc42bc917f81e7c47595c95cb914a619604ac07b8cebf6fd4d1d744ca |
||||
|
size 5667 |
||||
@ -0,0 +1,3 @@ |
|||||
|
version https://git-lfs.github.com/spec/v1 |
||||
|
oid sha256:491679b8057739b3c8e5bacd1e918efb1691d271cbbd69820ff8d480dcb90963 |
||||
|
size 5756 |
||||
@ -0,0 +1,3 @@ |
|||||
|
version https://git-lfs.github.com/spec/v1 |
||||
|
oid sha256:acc6ec555d41d15b368320edaa3b20958ee6fa97cb6e4a18d1213d5ae8bec73b |
||||
|
size 5770 |
||||
Loading…
Reference in new issue