diff --git a/AaruBenchmark/Benchs.cs b/AaruBenchmark/Benchs.cs index 9cc15a1..9493eeb 100644 --- a/AaruBenchmark/Benchs.cs +++ b/AaruBenchmark/Benchs.cs @@ -1,14 +1,35 @@ using System; using AaruBenchmark.Checksums; using BenchmarkDotNet.Attributes; +using BenchmarkDotNet.Configs; +using BenchmarkDotNet.Environments; using BenchmarkDotNet.Jobs; +using BenchmarkDotNet.Toolchains.CsProj; +using BenchmarkDotNet.Toolchains.DotNetCli; #if NET8_0_OR_GREATER using AaruBenchmark.Compression; #endif namespace AaruBenchmark; -[SimpleJob(RuntimeMoniker.NetCoreApp31), SimpleJob(RuntimeMoniker.Net80), SimpleJob(RuntimeMoniker.NativeAot80)] +[AttributeUsage(AttributeTargets.Class | AttributeTargets.Assembly)] +public class Core31RosettaJobAttribute : Attribute, IConfigSource +{ + public Core31RosettaJobAttribute() + { + Job job = new Job(".NET Core 3.1 (x64)", RunMode.Default).WithRuntime(CoreRuntime.Core31); + + NetCoreAppSettings dotnetCli32Bit = + NetCoreAppSettings.NetCoreApp31.WithCustomDotNetCliPath(@"/usr/local/share/dotnet/x64/dotnet", "x64"); + + Config = ManualConfig.CreateEmpty().AddJob(job.WithToolchain(CsProjCoreToolchain.From(dotnetCli32Bit))); + } + + public IConfig Config { get; } +} + +[SimpleJob(RuntimeMoniker.NetCoreApp31), Core31RosettaJob, SimpleJob(RuntimeMoniker.Net80), + SimpleJob(RuntimeMoniker.NativeAot80)] public class ADCBenchs { #if NET8_0_OR_GREATER @@ -32,7 +53,8 @@ public class ADCBenchs #endif } -[SimpleJob(RuntimeMoniker.NetCoreApp31), SimpleJob(RuntimeMoniker.Net80), SimpleJob(RuntimeMoniker.NativeAot80)] +[SimpleJob(RuntimeMoniker.NetCoreApp31), Core31RosettaJob, SimpleJob(RuntimeMoniker.Net80), + SimpleJob(RuntimeMoniker.NativeAot80)] public class AppleRleBenchs { #if NET8_0_OR_GREATER @@ -56,7 +78,8 @@ public class AppleRleBenchs #endif } -[SimpleJob(RuntimeMoniker.NetCoreApp31), SimpleJob(RuntimeMoniker.Net80), SimpleJob(RuntimeMoniker.NativeAot80)] +[SimpleJob(RuntimeMoniker.NetCoreApp31), Core31RosettaJob, SimpleJob(RuntimeMoniker.Net80), + SimpleJob(RuntimeMoniker.NativeAot80)] public class TeleDiskLzhBenchs { #if NET8_0_OR_GREATER @@ -74,7 +97,8 @@ public class TeleDiskLzhBenchs #endif } -[SimpleJob(RuntimeMoniker.NetCoreApp31), SimpleJob(RuntimeMoniker.Net80), SimpleJob(RuntimeMoniker.NativeAot80)] +[SimpleJob(RuntimeMoniker.NetCoreApp31), Core31RosettaJob, SimpleJob(RuntimeMoniker.Net80), + SimpleJob(RuntimeMoniker.NativeAot80)] public class GzipBenchs { #if NET8_0_OR_GREATER @@ -95,7 +119,8 @@ public class GzipBenchs public void DotNetZip() => Compression.DotNetZip.Gzip(); } -[SimpleJob(RuntimeMoniker.NetCoreApp31), SimpleJob(RuntimeMoniker.Net80), SimpleJob(RuntimeMoniker.NativeAot80)] +[SimpleJob(RuntimeMoniker.NetCoreApp31), Core31RosettaJob, SimpleJob(RuntimeMoniker.Net80), + SimpleJob(RuntimeMoniker.NativeAot80)] public class CompressGzipBenchs { #if NET8_0_OR_GREATER @@ -116,7 +141,8 @@ public class CompressGzipBenchs public void DotNetZip() => Compression.DotNetZip.CompressGzip(); } -[SimpleJob(RuntimeMoniker.NetCoreApp31), SimpleJob(RuntimeMoniker.Net80), SimpleJob(RuntimeMoniker.NativeAot80)] +[SimpleJob(RuntimeMoniker.NetCoreApp31), Core31RosettaJob, SimpleJob(RuntimeMoniker.Net80), + SimpleJob(RuntimeMoniker.NativeAot80)] public class Bzip2Benchs { #if NET8_0_OR_GREATER @@ -140,7 +166,8 @@ public class Bzip2Benchs #endif } -[SimpleJob(RuntimeMoniker.NetCoreApp31), SimpleJob(RuntimeMoniker.Net80), SimpleJob(RuntimeMoniker.NativeAot80)] +[SimpleJob(RuntimeMoniker.NetCoreApp31), Core31RosettaJob, SimpleJob(RuntimeMoniker.Net80), + SimpleJob(RuntimeMoniker.NativeAot80)] public class CompressBzip2Benchs { #if NET8_0_OR_GREATER @@ -164,7 +191,8 @@ public class CompressBzip2Benchs #endif } -[SimpleJob(RuntimeMoniker.NetCoreApp31), SimpleJob(RuntimeMoniker.Net80), SimpleJob(RuntimeMoniker.NativeAot80)] +[SimpleJob(RuntimeMoniker.NetCoreApp31), Core31RosettaJob, SimpleJob(RuntimeMoniker.Net80), + SimpleJob(RuntimeMoniker.NativeAot80)] public class LzipBenchs { [Benchmark(Baseline = true)] @@ -179,7 +207,8 @@ public class LzipBenchs #endif } -[SimpleJob(RuntimeMoniker.NetCoreApp31), SimpleJob(RuntimeMoniker.Net80), SimpleJob(RuntimeMoniker.NativeAot80)] +[SimpleJob(RuntimeMoniker.NetCoreApp31), Core31RosettaJob, SimpleJob(RuntimeMoniker.Net80), + SimpleJob(RuntimeMoniker.NativeAot80)] public class CompressLzipBenchs { [Benchmark(Baseline = true)] @@ -194,7 +223,8 @@ public class CompressLzipBenchs #endif } -[SimpleJob(RuntimeMoniker.NetCoreApp31), SimpleJob(RuntimeMoniker.Net80), SimpleJob(RuntimeMoniker.NativeAot80)] +[SimpleJob(RuntimeMoniker.NetCoreApp31), Core31RosettaJob, SimpleJob(RuntimeMoniker.Net80), + SimpleJob(RuntimeMoniker.NativeAot80)] public class LzmaBenchs { [Benchmark(Baseline = true)] @@ -208,7 +238,8 @@ public class LzmaBenchs #endif } -[SimpleJob(RuntimeMoniker.NetCoreApp31), SimpleJob(RuntimeMoniker.Net80), SimpleJob(RuntimeMoniker.NativeAot80)] +[SimpleJob(RuntimeMoniker.NetCoreApp31), Core31RosettaJob, SimpleJob(RuntimeMoniker.Net80), + SimpleJob(RuntimeMoniker.NativeAot80)] public class CompressLzmaBenchs { [Benchmark(Baseline = true)] @@ -223,7 +254,8 @@ public class CompressLzmaBenchs #endif } -[SimpleJob(RuntimeMoniker.NetCoreApp31), SimpleJob(RuntimeMoniker.Net80), SimpleJob(RuntimeMoniker.NativeAot80)] +[SimpleJob(RuntimeMoniker.NetCoreApp31), Core31RosettaJob, SimpleJob(RuntimeMoniker.Net80), + SimpleJob(RuntimeMoniker.NativeAot80)] public class FlacBenchs { [Benchmark(Baseline = true)] @@ -238,7 +270,8 @@ public class FlacBenchs #endif } -[SimpleJob(RuntimeMoniker.NetCoreApp31), SimpleJob(RuntimeMoniker.Net80), SimpleJob(RuntimeMoniker.NativeAot80)] +[SimpleJob(RuntimeMoniker.NetCoreApp31), Core31RosettaJob, SimpleJob(RuntimeMoniker.Net80), + SimpleJob(RuntimeMoniker.NativeAot80)] public class CompressFlacBenchs { [Benchmark(Baseline = true)] @@ -253,7 +286,8 @@ public class CompressFlacBenchs #endif } -[SimpleJob(RuntimeMoniker.NetCoreApp31), SimpleJob(RuntimeMoniker.Net80), SimpleJob(RuntimeMoniker.NativeAot80)] +[SimpleJob(RuntimeMoniker.NetCoreApp31), Core31RosettaJob, SimpleJob(RuntimeMoniker.Net80), + SimpleJob(RuntimeMoniker.NativeAot80)] public class Adler32Benchs { #if NET8_0_OR_GREATER @@ -277,7 +311,8 @@ public class Adler32Benchs #endif } -[SimpleJob(RuntimeMoniker.NetCoreApp31), SimpleJob(RuntimeMoniker.Net80), SimpleJob(RuntimeMoniker.NativeAot80)] +[SimpleJob(RuntimeMoniker.NetCoreApp31), Core31RosettaJob, SimpleJob(RuntimeMoniker.Net80), + SimpleJob(RuntimeMoniker.NativeAot80)] public class Fletcher16Benchs { #if NET8_0_OR_GREATER @@ -301,7 +336,8 @@ public class Fletcher16Benchs #endif } -[SimpleJob(RuntimeMoniker.NetCoreApp31), SimpleJob(RuntimeMoniker.Net80), SimpleJob(RuntimeMoniker.NativeAot80)] +[SimpleJob(RuntimeMoniker.NetCoreApp31), Core31RosettaJob, SimpleJob(RuntimeMoniker.Net80), + SimpleJob(RuntimeMoniker.NativeAot80)] public class Fletcher32Benchs { #if NET8_0_OR_GREATER @@ -325,7 +361,8 @@ public class Fletcher32Benchs #endif } -[SimpleJob(RuntimeMoniker.NetCoreApp31), SimpleJob(RuntimeMoniker.Net80), SimpleJob(RuntimeMoniker.NativeAot80)] +[SimpleJob(RuntimeMoniker.NetCoreApp31), Core31RosettaJob, SimpleJob(RuntimeMoniker.Net80), + SimpleJob(RuntimeMoniker.NativeAot80)] public class Crc16CcittBenchs { #if NET8_0_OR_GREATER @@ -349,7 +386,8 @@ public class Crc16CcittBenchs #endif } -[SimpleJob(RuntimeMoniker.NetCoreApp31), SimpleJob(RuntimeMoniker.Net80), SimpleJob(RuntimeMoniker.NativeAot80)] +[SimpleJob(RuntimeMoniker.NetCoreApp31), Core31RosettaJob, SimpleJob(RuntimeMoniker.Net80), + SimpleJob(RuntimeMoniker.NativeAot80)] public class Crc16Benchs { #if NET8_0_OR_GREATER @@ -373,7 +411,8 @@ public class Crc16Benchs #endif } -[SimpleJob(RuntimeMoniker.NetCoreApp31), SimpleJob(RuntimeMoniker.Net80), SimpleJob(RuntimeMoniker.NativeAot80)] +[SimpleJob(RuntimeMoniker.NetCoreApp31), Core31RosettaJob, SimpleJob(RuntimeMoniker.Net80), + SimpleJob(RuntimeMoniker.NativeAot80)] public class Crc32Benchs { #if NET8_0_OR_GREATER @@ -400,7 +439,8 @@ public class Crc32Benchs public void rhash() => RHash.Crc32(); } -[SimpleJob(RuntimeMoniker.NetCoreApp31), SimpleJob(RuntimeMoniker.Net80), SimpleJob(RuntimeMoniker.NativeAot80)] +[SimpleJob(RuntimeMoniker.NetCoreApp31), Core31RosettaJob, SimpleJob(RuntimeMoniker.Net80), + SimpleJob(RuntimeMoniker.NativeAot80)] public class Crc64Benchs { #if NET8_0_OR_GREATER @@ -424,7 +464,8 @@ public class Crc64Benchs #endif } -[SimpleJob(RuntimeMoniker.NetCoreApp31), SimpleJob(RuntimeMoniker.Net80), SimpleJob(RuntimeMoniker.NativeAot80)] +[SimpleJob(RuntimeMoniker.NetCoreApp31), Core31RosettaJob, SimpleJob(RuntimeMoniker.Net80), + SimpleJob(RuntimeMoniker.NativeAot80)] public class Md5Benchs { [Benchmark(Baseline = true)] @@ -437,7 +478,8 @@ public class Md5Benchs public void rhash() => RHash.Md5(); } -[SimpleJob(RuntimeMoniker.NetCoreApp31), SimpleJob(RuntimeMoniker.Net80), SimpleJob(RuntimeMoniker.NativeAot80)] +[SimpleJob(RuntimeMoniker.NetCoreApp31), Core31RosettaJob, SimpleJob(RuntimeMoniker.Net80), + SimpleJob(RuntimeMoniker.NativeAot80)] public class Sha1Benchs { [Benchmark(Baseline = true)] @@ -450,7 +492,8 @@ public class Sha1Benchs public void rhash() => RHash.Sha1(); } -[SimpleJob(RuntimeMoniker.NetCoreApp31), SimpleJob(RuntimeMoniker.Net80), SimpleJob(RuntimeMoniker.NativeAot80)] +[SimpleJob(RuntimeMoniker.NetCoreApp31), Core31RosettaJob, SimpleJob(RuntimeMoniker.Net80), + SimpleJob(RuntimeMoniker.NativeAot80)] public class Sha256Benchs { [Benchmark(Baseline = true)] @@ -463,7 +506,8 @@ public class Sha256Benchs public void rhash() => RHash.Sha256(); } -[SimpleJob(RuntimeMoniker.NetCoreApp31), SimpleJob(RuntimeMoniker.Net80), SimpleJob(RuntimeMoniker.NativeAot80)] +[SimpleJob(RuntimeMoniker.NetCoreApp31), Core31RosettaJob, SimpleJob(RuntimeMoniker.Net80), + SimpleJob(RuntimeMoniker.NativeAot80)] public class Sha384Benchs { [Benchmark(Baseline = true)] @@ -476,7 +520,8 @@ public class Sha384Benchs public void rhash() => RHash.Sha384(); } -[SimpleJob(RuntimeMoniker.NetCoreApp31), SimpleJob(RuntimeMoniker.Net80), SimpleJob(RuntimeMoniker.NativeAot80)] +[SimpleJob(RuntimeMoniker.NetCoreApp31), Core31RosettaJob, SimpleJob(RuntimeMoniker.Net80), + SimpleJob(RuntimeMoniker.NativeAot80)] public class Sha512Benchs { [Benchmark(Baseline = true)] @@ -489,7 +534,8 @@ public class Sha512Benchs public void rhash() => RHash.Sha512(); } -[SimpleJob(RuntimeMoniker.NetCoreApp31), SimpleJob(RuntimeMoniker.Net80), SimpleJob(RuntimeMoniker.NativeAot80)] +[SimpleJob(RuntimeMoniker.NetCoreApp31), Core31RosettaJob, SimpleJob(RuntimeMoniker.Net80), + SimpleJob(RuntimeMoniker.NativeAot80)] public class SpamSumBenchs { #if NET8_0_OR_GREATER