From 92dad2f0f0ffa17d2c3b2b22fd3538c6427c0ca6 Mon Sep 17 00:00:00 2001 From: Natalia Portillo Date: Sun, 17 Oct 2021 01:22:59 +0100 Subject: [PATCH] Implement native benchmark for Apple RLE. --- AaruBenchmark/AaruBenchmark.csproj | 4 +++ AaruBenchmark/Benchs.cs | 3 ++ AaruBenchmark/Compression/AaruNative.cs | 36 ++++++++++++++++++++++++ Benchmarks.ods | Bin 85473 -> 85778 bytes 4 files changed, 43 insertions(+) create mode 100644 AaruBenchmark/Compression/AaruNative.cs diff --git a/AaruBenchmark/AaruBenchmark.csproj b/AaruBenchmark/AaruBenchmark.csproj index 3bbe07d..d0cf382 100644 --- a/AaruBenchmark/AaruBenchmark.csproj +++ b/AaruBenchmark/AaruBenchmark.csproj @@ -34,6 +34,10 @@ Always + + + Always + diff --git a/AaruBenchmark/Benchs.cs b/AaruBenchmark/Benchs.cs index e477eba..b306c4e 100644 --- a/AaruBenchmark/Benchs.cs +++ b/AaruBenchmark/Benchs.cs @@ -13,6 +13,9 @@ namespace AaruBenchmark [Benchmark] public void Aaru6() => Aaru6Compressions.AppleRle(); + + [Benchmark] + public void AaruNative() => Compression.AaruNative.AppleRle(); } [SimpleJob(RuntimeMoniker.Net60)] diff --git a/AaruBenchmark/Compression/AaruNative.cs b/AaruBenchmark/Compression/AaruNative.cs new file mode 100644 index 0000000..e95a9c7 --- /dev/null +++ b/AaruBenchmark/Compression/AaruNative.cs @@ -0,0 +1,36 @@ +using System.IO; +using System.Runtime.InteropServices; +using Aaru6.Checksums; + +namespace AaruBenchmark.Compression +{ + public class AaruNative + { + [DllImport("libAaru.Compression.Native", SetLastError = true)] + static extern int apple_rle_decode_buffer(byte[] dst_buffer, int dst_size, byte[] src_buffer, int src_size); + + public static void AppleRle() + { + const int bufferSize = 32768; + byte[] input = new byte[1102]; + + var fs = new FileStream(Path.Combine(Program.Folder, "apple_rle.bin"), FileMode.Open, FileAccess.Read); + + fs.Read(input, 0, input.Length); + fs.Close(); + fs.Dispose(); + + byte[] output = new byte[bufferSize]; + + int realSize = apple_rle_decode_buffer(output, output.Length, input, input.Length); + + if(realSize != 20960) + throw new InvalidDataException("Incorrect decompressed size"); + + string crc = Crc32Context.Data(output, (uint)realSize, out _); + + if(crc != "3525ef06") + throw new InvalidDataException("Incorrect decompressed checksum"); + } + } +} \ No newline at end of file diff --git a/Benchmarks.ods b/Benchmarks.ods index 7fa0b6358cbe450032914be16ef69fd0b22d8557..ce467b6b4475ea57e210a65e1483c13d01f7d123 100644 GIT binary patch delta 21914 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±g+e~bU?al(`BO_ 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