diff --git a/SimpleCDN.Benchmarks/Benchmarks.cs b/SimpleCDN.Benchmarks/Benchmarks.cs index f1f3220..dcf2854 100644 --- a/SimpleCDN.Benchmarks/Benchmarks.cs +++ b/SimpleCDN.Benchmarks/Benchmarks.cs @@ -1,4 +1,5 @@ using BenchmarkDotNet.Attributes; +using BenchmarkDotNet.Jobs; using System; using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; @@ -9,35 +10,27 @@ namespace SimpleCDN.Benchmarks { [MemoryDiagnoser(false)] + //[SimpleJob(RuntimeMoniker.NativeAot90)] + [SimpleJob(RuntimeMoniker.Net90)] public class Benchmarks { - public IEnumerable Paths => + public static IEnumerable Paths => [ - "/".ToCharArray(), - "/../".ToCharArray(), - "/data/../".ToCharArray(), "/test.txt".ToCharArray(), - "/data/../test.txt".ToCharArray(), - "/data/test.json".ToCharArray(), - "/data/../data/test.json".ToCharArray(), - "/data/./../data/test.json".ToCharArray(), - "/data/data/../../data/test.json".ToCharArray(), - "/data/data/../../data/../data/test.json".ToCharArray(), - "/data/data/../../data/../data/../data/test.json".ToCharArray(), "/data/data/.././data/../../../data/../data/test.json".ToCharArray(), + "/data/data/../../data/../data/../data/../data/./../data/data/../data/../data/../data/./../data/test/data/../../test/data/../../data/../data/test.json".ToCharArray(), ]; - [ParamsSource(nameof(Paths))] - public char[] Path { get; set; } = []; - - const int NormalizationBenchmarkIterationsPerInvoke = 100; + const int NormalizationBenchmarkIterationsPerInvoke = 50; [Benchmark(OperationsPerInvoke = NormalizationBenchmarkIterationsPerInvoke)] - public void NormalizationBenchmark() + [ArgumentsSource(nameof(Paths))] + public void Normalize(char[] path) { - var span = Path.AsSpan(); for (var i = 0; i < NormalizationBenchmarkIterationsPerInvoke; i++) { + var copy = path.ToArray(); + var span = copy.AsSpan(); Helpers.Extensions.Normalize(ref span); } } diff --git a/SimpleCDN.Benchmarks/GlobalSuppressions.cs b/SimpleCDN.Benchmarks/GlobalSuppressions.cs new file mode 100644 index 0000000..1499341 --- /dev/null +++ b/SimpleCDN.Benchmarks/GlobalSuppressions.cs @@ -0,0 +1,8 @@ +// This file is used by Code Analysis to maintain SuppressMessage +// attributes that are applied to this project. +// Project-level suppressions either have no target or are given +// a specific target and scoped to a namespace, type, member, etc. + +using System.Diagnostics.CodeAnalysis; + +[assembly: SuppressMessage("Performance", "CA1822:Mark members as static", Justification = "BenchmarkDotnet requires some members to be non-static, even if they could be static.")] diff --git a/SimpleCDN.Benchmarks/Properties/launchSettings.json b/SimpleCDN.Benchmarks/Properties/launchSettings.json new file mode 100644 index 0000000..e31c6bc --- /dev/null +++ b/SimpleCDN.Benchmarks/Properties/launchSettings.json @@ -0,0 +1,7 @@ +{ + "profiles": { + "SimpleCDN.Benchmarks": { + "commandName": "Project" + } + } +} \ No newline at end of file diff --git a/launchSettings.json b/launchSettings.json index 00d9350..b9bebba 100644 --- a/launchSettings.json +++ b/launchSettings.json @@ -3,6 +3,9 @@ "Docker Compose": { "commandName": "DockerCompose", "commandVersion": "1.0", + "composeLaunchAction": "LaunchBrowser", + "composeLaunchServiceName": "simplecdn", + "composeLaunchUrl": "{Scheme}://localhost:{ServicePort}", "serviceActions": { "simplecdn": "StartDebugging" }