Browse Source

benchmarks for current state

pull/768/head
Anton Firszov 8 years ago
parent
commit
265f27913c
  1. 2
      src/ImageSharp/Common/Helpers/InliningOptions.cs
  2. 2
      src/ImageSharp/Common/Helpers/SimdUtils.ExtendedIntrinsics.cs
  3. 9
      tests/ImageSharp.Benchmarks/Codecs/Jpeg/DecodeJpeg.cs
  4. 48
      tests/ImageSharp.Benchmarks/General/Block8x8F_LoadFromInt16.cs

2
src/ImageSharp/Common/Helpers/InliningOptions.cs

@ -2,7 +2,7 @@
// Licensed under the Apache License, Version 2.0.
// Uncomment this for verbose profiler results:
#define PROFILING
// #define PROFILING
using System.Runtime.CompilerServices;
namespace SixLabors.ImageSharp

2
src/ImageSharp/Common/Helpers/SimdUtils.ExtendedIntrinsics.cs

@ -28,7 +28,7 @@ namespace SixLabors.ImageSharp
/// <summary>
/// Widen and convert a vector of <see cref="short"/> values into 2 vectors of <see cref="float"/>-s.
/// </summary>
[MethodImpl(InliningOptions.ShortMethod)]
[MethodImpl(MethodImplOptions.AggressiveInlining)]
internal static void ConvertToSingle(
Vector<short> source,
out Vector<float> dest1,

9
tests/ImageSharp.Benchmarks/Codecs/Jpeg/DecodeJpeg.cs

@ -76,5 +76,14 @@ namespace SixLabors.ImageSharp.Benchmarks.Codecs.Jpeg
// | | | | | | | | | |
// 'Decode Jpeg - System.Drawing' | Core | Jpg/baseline/jpeg420exif.jpg | 17.45 ms | 2.092 ms | 0.1182 ms | 1.00 | 0.00 | 218.7500 | 757.04 KB |
// 'Decode Jpeg - ImageSharp' | Core | Jpg/baseline/jpeg420exif.jpg | 48.39 ms | 14.562 ms | 0.8228 ms | 2.77 | 0.04 | 125.0000 | 529.96 KB |
// RESULTS (2018 November 1):
// Method | Runtime | TestImage | Mean | Error | StdDev | Scaled | ScaledSD | Gen 0 | Allocated |
// ------------------------------- |-------- |----------------------------- |---------:|----------:|----------:|-------:|---------:|---------:|----------:|
// 'Decode Jpeg - System.Drawing' | Clr | Jpg/baseline/jpeg420exif.jpg | 17.59 ms | 4.611 ms | 0.2605 ms | 1.00 | 0.00 | 218.7500 | 757.88 KB |
// 'Decode Jpeg - ImageSharp' | Clr | Jpg/baseline/jpeg420exif.jpg | 55.33 ms | 2.133 ms | 0.1205 ms | 3.15 | 0.04 | 125.0000 | 566.01 KB |
// | | | | | | | | | |
// 'Decode Jpeg - System.Drawing' | Core | Jpg/baseline/jpeg420exif.jpg | 17.83 ms | 24.326 ms | 1.3745 ms | 1.00 | 0.00 | 218.7500 | 757.04 KB |
// 'Decode Jpeg - ImageSharp' | Core | Jpg/baseline/jpeg420exif.jpg | 44.93 ms | 3.088 ms | 0.1745 ms | 2.53 | 0.15 | 125.0000 | 529.96 KB |
}
}

48
tests/ImageSharp.Benchmarks/General/Block8x8F_LoadFromInt16.cs

@ -0,0 +1,48 @@
using System;
using System.Numerics;
using BenchmarkDotNet.Attributes;
using SixLabors.ImageSharp.Formats.Jpeg.Components;
namespace SixLabors.ImageSharp.Benchmarks.General
{
public class Block8x8F_LoadFromInt16
{
private Block8x8 source;
private Block8x8F dest = default;
[GlobalSetup]
public void Setup()
{
if (Vector<float>.Count != 8)
{
throw new NotSupportedException("Vector<float>.Count != 8");
}
for (short i = 0; i < Block8x8F.Size; i++)
{
this.source[i] = i;
}
}
[Benchmark(Baseline = true)]
public void Scalar()
{
this.dest.LoadFromInt16Scalar(ref this.source);
}
[Benchmark]
public void ExtendedAvx2()
{
this.dest.LoadFromInt16ExtendedAvx2(ref this.source);
}
// RESULT:
// Method | Mean | Error | StdDev | Scaled |
// ------------- |---------:|----------:|----------:|-------:|
// Scalar | 34.88 ns | 0.3296 ns | 0.3083 ns | 1.00 |
// ExtendedAvx2 | 21.58 ns | 0.2125 ns | 0.1884 ns | 0.62 |
}
}
Loading…
Cancel
Save