FileOnQ / Imaging.Heif

A C#/.NET wrapper around libheif for decoding and processing high efficiency image formats (heif, heic).
GNU Lesser General Public License v3.0
15 stars 4 forks source link

Added deterministic build for nuget.props instead of build #89

Closed SkyeHoefling closed 2 years ago

SkyeHoefling commented 2 years ago

Fixes: #80

Description

Removes /p:ContinuousBuildIntegration=true from build commands and included as part of the nuget.props file. This will ensure whenever it is being built on GitHub Actions our dlls are deterministic.

Merge Checklist

github-actions[bot] commented 2 years ago

Benchmark Comparison - .NET Framework 4.8

Benchmarking comparison between this Pull Request and the comitted values at benchmarks/results

thumbnail

 summary:
better: 3, geomean: 1.149
total diff: 3

No Slower results for the provided threshold = 10% and noise filter = 0.3ns.

| Faster                                                       | base/diff | Base Median (ns) | Diff Median (ns) | Modality|
| ------------------------------------------------------------ | ---------:| ----------------:| ----------------:| --------:|
| FileOnQ.Imaging.Heif.Benchmarks.Thumbnail.Thumbnail_ToSpan   |      1.16 |      58913500.00 |      50974650.00 |         |
| FileOnQ.Imaging.Heif.Benchmarks.Thumbnail.Thumbnail_ToArray  |      1.15 |      58636250.00 |      51169750.00 |         |
| FileOnQ.Imaging.Heif.Benchmarks.Thumbnail.Thumbnail_ToStream |      1.14 |      59449850.00 |      51941250.00 |         |

No file given

primary

 summary:
better: 3, geomean: 1.177
total diff: 3

No Slower results for the provided threshold = 10% and noise filter = 0.3ns.

| Faster                                                            | base/diff | Base Median (ns) | Diff Median (ns) | Modality|
| ----------------------------------------------------------------- | ---------:| ----------------:| ----------------:| --------:|
| FileOnQ.Imaging.Heif.Benchmarks.PrimaryImage.PrimaryImage_Write   |      1.23 |    2982269900.00 |    2418857400.00 |         |
| FileOnQ.Imaging.Heif.Benchmarks.PrimaryImage.PrimaryImage_ToSpan  |      1.17 |    2829898300.00 |    2423532100.00 |         |
| FileOnQ.Imaging.Heif.Benchmarks.PrimaryImage.PrimaryImage_ToArray |      1.13 |    2743673900.00 |    2423432500.00 |         |

No file given

Benchmark Results - .NET Framework 4.8

thumbnail

``` ini BenchmarkDotNet=v0.13.1, OS=Windows 10.0.17763.2458 (1809/October2018Update/Redstone5), VM=Hyper-V Intel Xeon CPU E5-2673 v4 2.30GHz, 1 CPU, 2 logical and 2 physical cores [Host] : .NET Framework 4.8 (4.8.4420.0), X64 RyuJIT Job-GHSIOX : .NET Framework 4.8 (4.8.4420.0), X64 RyuJIT Runtime=.NET Framework 4.8 InvocationCount=1 LaunchCount=1 UnrollFactor=1 ``` | Method | Mean | Error | StdDev | Allocated native memory | Native memory leak | Allocated | |------------------- |---------:|---------:|---------:|------------------------:|-------------------:|----------:| | Thumbnail_Write | 52.70 ms | 1.052 ms | 1.976 ms | 5,123,891 B | - | 74,504 B | | Thumbnail_ToArray | 51.51 ms | 1.023 ms | 2.490 ms | 5,123,563 B | - | 74,504 B | | Thumbnail_ToSpan | 51.09 ms | 1.016 ms | 2.395 ms | 5,123,563 B | - | - | | Thumbnail_ToStream | 51.80 ms | 1.029 ms | 1.828 ms | 5,123,579 B | - | 140,816 B |

primary

``` ini BenchmarkDotNet=v0.13.1, OS=Windows 10.0.17763.2458 (1809/October2018Update/Redstone5), VM=Hyper-V Intel Xeon Platinum 8272CL CPU 2.60GHz, 1 CPU, 2 logical and 2 physical cores [Host] : .NET Framework 4.8 (4.8.4420.0), X64 RyuJIT Job-GHSIOX : .NET Framework 4.8 (4.8.4420.0), X64 RyuJIT Runtime=.NET Framework 4.8 InvocationCount=1 LaunchCount=1 UnrollFactor=1 ``` | Method | Mean | Error | StdDev | Allocated native memory | Native memory leak | Allocated | |---------------------- |--------:|---------:|---------:|------------------------:|-------------------:|------------:| | PrimaryImage_Write | 2.417 s | 0.0046 s | 0.0043 s | 222,029,086 B | - | 1,951,112 B | | PrimaryImage_ToArray | 2.425 s | 0.0069 s | 0.0065 s | 222,028,710 B | - | 1,951,112 B | | PrimaryImage_ToSpan | 2.423 s | 0.0063 s | 0.0059 s | 222,028,582 B | - | - | | PrimaryImage_ToStream | 2.475 s | 0.0064 s | 0.0057 s | 222,028,534 B | - | 3,894,032 B |

Benchmark Comparison - .NET 5

Benchmarking comparison between this Pull Request and the comitted values at benchmarks/results

thumbnail

 summary:
better: 4, geomean: 1.223
total diff: 4

No Slower results for the provided threshold = 10% and noise filter = 0.3ns.

| Faster                                                       | base/diff | Base Median (ns) | Diff Median (ns) | Modality|
| ------------------------------------------------------------ | ---------:| ----------------:| ----------------:| --------:|
| FileOnQ.Imaging.Heif.Benchmarks.Thumbnail.Thumbnail_Write    |      1.23 |      59536600.00 |      48253200.00 |         |
| FileOnQ.Imaging.Heif.Benchmarks.Thumbnail.Thumbnail_ToArray  |      1.23 |      58728450.00 |      47618850.00 |         |
| FileOnQ.Imaging.Heif.Benchmarks.Thumbnail.Thumbnail_ToStream |      1.22 |      58199200.00 |      47598100.00 |         |
| FileOnQ.Imaging.Heif.Benchmarks.Thumbnail.Thumbnail_ToSpan   |      1.20 |      57887100.00 |      48093300.00 |         |

No file given

primary

 summary:
better: 4, geomean: 1.198
total diff: 4

No Slower results for the provided threshold = 10% and noise filter = 0.3ns.

| Faster                                                             | base/diff | Base Median (ns) | Diff Median (ns) | Modality|
| ------------------------------------------------------------------ | ---------:| ----------------:| ----------------:| --------:|
| FileOnQ.Imaging.Heif.Benchmarks.PrimaryImage.PrimaryImage_ToSpan   |      1.22 |    2976810300.00 |    2437532700.00 |         |
| FileOnQ.Imaging.Heif.Benchmarks.PrimaryImage.PrimaryImage_ToArray  |      1.21 |    2920373000.00 |    2406665200.00 |         |
| FileOnQ.Imaging.Heif.Benchmarks.PrimaryImage.PrimaryImage_Write    |      1.21 |    2905592400.00 |    2404777500.00 |         |
| FileOnQ.Imaging.Heif.Benchmarks.PrimaryImage.PrimaryImage_ToStream |      1.15 |    2982379850.00 |    2592364300.00 |         |

No file given

Benchmark Results - .NET 5

thumbnail

``` ini BenchmarkDotNet=v0.13.1, OS=Windows 10.0.17763.2458 (1809/October2018Update/Redstone5) Intel Xeon Platinum 8272CL CPU 2.60GHz, 1 CPU, 2 logical and 2 physical cores .NET SDK=6.0.101 [Host] : .NET 5.0.8 (5.0.821.31504), X64 RyuJIT Job-SMVLVE : .NET 5.0.8 (5.0.821.31504), X64 RyuJIT Runtime=.NET 5.0 InvocationCount=1 LaunchCount=1 UnrollFactor=1 ``` | Method | Mean | Error | StdDev | Allocated native memory | Native memory leak | Allocated | |------------------- |---------:|---------:|---------:|------------------------:|-------------------:|----------:| | Thumbnail_Write | 48.27 ms | 0.241 ms | 0.226 ms | 5,124,409 B | - | 288 B | | Thumbnail_ToArray | 47.79 ms | 0.559 ms | 0.496 ms | 5,123,869 B | - | 66,408 B | | Thumbnail_ToSpan | 47.85 ms | 0.445 ms | 0.416 ms | 5,123,853 B | - | 120 B | | Thumbnail_ToStream | 47.75 ms | 0.429 ms | 0.402 ms | 5,123,853 B | - | 66,472 B |

primary

``` ini BenchmarkDotNet=v0.13.1, OS=Windows 10.0.17763.2458 (1809/October2018Update/Redstone5) Intel Xeon Platinum 8272CL CPU 2.60GHz, 1 CPU, 2 logical and 2 physical cores .NET SDK=6.0.101 [Host] : .NET 5.0.8 (5.0.821.31504), X64 RyuJIT Job-IRXTMN : .NET 5.0.8 (5.0.821.31504), X64 RyuJIT Runtime=.NET 5.0 InvocationCount=1 LaunchCount=1 UnrollFactor=1 ``` | Method | Mean | Error | StdDev | Allocated native memory | Native memory leak | Allocated | |---------------------- |--------:|---------:|---------:|------------------------:|-------------------:|------------:| | PrimaryImage_Write | 2.406 s | 0.0071 s | 0.0063 s | 222,029,556 B | - | 256 B | | PrimaryImage_ToArray | 2.419 s | 0.0248 s | 0.0232 s | 222,029,032 B | - | 1,943,008 B | | PrimaryImage_ToSpan | 2.443 s | 0.0140 s | 0.0124 s | 222,029,000 B | - | 88 B | | PrimaryImage_ToStream | 2.591 s | 0.0461 s | 0.0431 s | 222,028,504 B | - | 1,943,072 B |

Benchmark Comparison - .NET 6

Benchmarking comparison between this Pull Request and the comitted values at benchmarks/results

thumbnail

 summary:
worse: 4, geomean: 1.197
total diff: 4

| Slower                                                       | diff/base | Base Median (ns) | Diff Median (ns) | Modality|
| ------------------------------------------------------------ | ---------:| ----------------:| ----------------:| --------:|
| FileOnQ.Imaging.Heif.Benchmarks.Thumbnail.Thumbnail_ToSpan   |      1.22 |      47550100.00 |      57930700.00 |         |
| FileOnQ.Imaging.Heif.Benchmarks.Thumbnail.Thumbnail_ToStream |      1.20 |      47692700.00 |      57179200.00 |         |
| FileOnQ.Imaging.Heif.Benchmarks.Thumbnail.Thumbnail_ToArray  |      1.20 |      47222300.00 |      56516200.00 |         |
| FileOnQ.Imaging.Heif.Benchmarks.Thumbnail.Thumbnail_Write    |      1.17 |      48024300.00 |      56374700.00 |         |

No Faster results for the provided threshold = 10% and noise filter = 0.3ns.

No file given

primary

 summary:
better: 3, geomean: 1.135
total diff: 3

No Slower results for the provided threshold = 10% and noise filter = 0.3ns.

| Faster                                                             | base/diff | Base Median (ns) | Diff Median (ns) | Modality|
| ------------------------------------------------------------------ | ---------:| ----------------:| ----------------:| --------:|
| FileOnQ.Imaging.Heif.Benchmarks.PrimaryImage.PrimaryImage_ToArray  |      1.15 |    2893204600.00 |    2519450500.00 |         |
| FileOnQ.Imaging.Heif.Benchmarks.PrimaryImage.PrimaryImage_ToStream |      1.13 |    2979033400.00 |    2632746600.00 |         |
| FileOnQ.Imaging.Heif.Benchmarks.PrimaryImage.PrimaryImage_ToSpan   |      1.12 |    2975119200.00 |    2646842700.00 |         |

No file given

Benchmark Results - .NET 6

thumbnail

``` ini BenchmarkDotNet=v0.13.1, OS=Windows 10.0.17763.2458 (1809/October2018Update/Redstone5) Intel Xeon CPU E5-2673 v4 2.30GHz, 1 CPU, 2 logical and 2 physical cores .NET SDK=6.0.101 [Host] : .NET 6.0.1 (6.0.121.56705), X64 RyuJIT Job-CHVRNL : .NET 6.0.1 (6.0.121.56705), X64 RyuJIT Runtime=.NET 6.0 InvocationCount=1 LaunchCount=1 UnrollFactor=1 ``` | Method | Mean | Error | StdDev | Allocated native memory | Native memory leak | Allocated | |------------------- |---------:|---------:|---------:|------------------------:|-------------------:|----------:| | Thumbnail_Write | 56.31 ms | 1.123 ms | 1.537 ms | 5,124,409 B | - | 832 B | | Thumbnail_ToArray | 56.75 ms | 1.108 ms | 1.138 ms | 5,123,853 B | - | 66,888 B | | Thumbnail_ToSpan | 57.92 ms | 0.973 ms | 0.812 ms | 5,123,597 B | - | 600 B | | Thumbnail_ToStream | 57.54 ms | 1.038 ms | 0.971 ms | 5,123,917 B | 64 B | 66,952 B |

primary

``` ini BenchmarkDotNet=v0.13.1, OS=Windows 10.0.17763.2458 (1809/October2018Update/Redstone5) Intel Xeon Platinum 8370C CPU 2.80GHz, 1 CPU, 2 logical and 2 physical cores .NET SDK=6.0.101 [Host] : .NET 6.0.1 (6.0.121.56705), X64 RyuJIT Job-UKGKCA : .NET 6.0.1 (6.0.121.56705), X64 RyuJIT Runtime=.NET 6.0 InvocationCount=1 LaunchCount=1 UnrollFactor=1 ``` | Method | Mean | Error | StdDev | Allocated native memory | Native memory leak | Allocated | |---------------------- |--------:|---------:|---------:|------------------------:|-------------------:|------------:| | PrimaryImage_Write | 2.627 s | 0.0223 s | 0.0198 s | 222,029,236 B | - | 848 B | | PrimaryImage_ToArray | 2.519 s | 0.0040 s | 0.0036 s | 222,028,904 B | - | 1,943,536 B | | PrimaryImage_ToSpan | 2.648 s | 0.0145 s | 0.0121 s | 222,028,536 B | - | 616 B | | PrimaryImage_ToStream | 2.634 s | 0.0157 s | 0.0146 s | 222,028,264 B | - | 1,943,600 B |