diff --git a/bench/BenchmarkDotNet.Artifacts/results/Polly.Core.Benchmarks.CompositeComponentBenchmark-report-github.md b/bench/BenchmarkDotNet.Artifacts/results/Polly.Core.Benchmarks.CompositeComponentBenchmark-report-github.md new file mode 100644 index 0000000000..cfb46f674a --- /dev/null +++ b/bench/BenchmarkDotNet.Artifacts/results/Polly.Core.Benchmarks.CompositeComponentBenchmark-report-github.md @@ -0,0 +1,14 @@ +``` + +BenchmarkDotNet v0.13.9+228a464e8be6c580ad9408e98f18813f6407fb5a, Windows 11 (10.0.22621.2428/22H2/2022Update/SunValley2) +12th Gen Intel Core i7-1270P, 1 CPU, 16 logical and 12 physical cores +.NET SDK 7.0.403 + [Host] : .NET 7.0.13 (7.0.1323.51816), X64 RyuJIT AVX2 + +Job=MediumRun Toolchain=InProcessEmitToolchain IterationCount=15 +LaunchCount=2 WarmupCount=10 + +``` +| Method | Mean | Error | StdDev | Allocated | +|------------------------------- |---------:|---------:|---------:|----------:| +| CompositeComponent_ExecuteCore | 44.37 ns | 1.994 ns | 2.923 ns | - | diff --git a/bench/Polly.Core.Benchmarks/CompositeComponentBenchmark.cs b/bench/Polly.Core.Benchmarks/CompositeComponentBenchmark.cs new file mode 100644 index 0000000000..453862cfc1 --- /dev/null +++ b/bench/Polly.Core.Benchmarks/CompositeComponentBenchmark.cs @@ -0,0 +1,27 @@ +using Polly.Telemetry; +using Polly.Utils.Pipeline; + +namespace Polly.Core.Benchmarks; + +public class CompositeComponentBenchmark +{ + private ResilienceContext? _context; + private PipelineComponent? _component; + + [GlobalSetup] + public void Setup() + { + var first = PipelineComponent.Empty; + var second = PipelineComponent.Empty; + var source = new ResilienceTelemetrySource("pipeline", "instance", "strategy"); + var telemetry = new ResilienceStrategyTelemetry(source, null); + var components = new[] { first, second }; + + _component = CompositeComponent.Create(components, telemetry, TimeProvider.System); + _context = ResilienceContextPool.Shared.Get(); + } + + [Benchmark] + public ValueTask> CompositeComponent_ExecuteCore() + => _component!.ExecuteCore((_, state) => Outcome.FromResultAsValueTask(state), _context!, 42); +} diff --git a/bench/Polly.Core.Benchmarks/TelemetryBenchmark.cs b/bench/Polly.Core.Benchmarks/TelemetryBenchmark.cs index 667e8d30b1..86d3517e4a 100644 --- a/bench/Polly.Core.Benchmarks/TelemetryBenchmark.cs +++ b/bench/Polly.Core.Benchmarks/TelemetryBenchmark.cs @@ -77,7 +77,7 @@ private class TelemetryEventStrategy : ResilienceStrategy public TelemetryEventStrategy(ResilienceStrategyTelemetry telemetry) => _telemetry = telemetry; - protected override ValueTask> ExecuteCore( + protected internal override ValueTask> ExecuteCore( Func>> callback, ResilienceContext context, TState state) diff --git a/bench/Polly.Core.Benchmarks/Utils/EmptyResilienceStrategy.cs b/bench/Polly.Core.Benchmarks/Utils/EmptyResilienceStrategy.cs index 69c4c9df0a..b8d0c5d63e 100644 --- a/bench/Polly.Core.Benchmarks/Utils/EmptyResilienceStrategy.cs +++ b/bench/Polly.Core.Benchmarks/Utils/EmptyResilienceStrategy.cs @@ -2,7 +2,7 @@ namespace Polly.Core.Benchmarks.Utils; internal class EmptyResilienceStrategy : ResilienceStrategy { - protected override ValueTask> ExecuteCore( + protected internal override ValueTask> ExecuteCore( Func>> callback, ResilienceContext context, TState state) diff --git a/bench/Polly.Core.Benchmarks/Utils/Helper.CircuitBreaker.cs b/bench/Polly.Core.Benchmarks/Utils/Helper.CircuitBreaker.cs index c7cd8f451b..ec864f1dff 100644 --- a/bench/Polly.Core.Benchmarks/Utils/Helper.CircuitBreaker.cs +++ b/bench/Polly.Core.Benchmarks/Utils/Helper.CircuitBreaker.cs @@ -66,7 +66,7 @@ public static object CreateCircuitBreaker(PollyVersion technology) private class OutcomeHandlingStrategy : ResilienceStrategy { - protected override async ValueTask> ExecuteCore( + protected internal override async ValueTask> ExecuteCore( Func>> callback, ResilienceContext context, TState state) diff --git a/eng/Common.targets b/eng/Common.targets index 74660f2e8b..cb377cc3a5 100644 --- a/eng/Common.targets +++ b/eng/Common.targets @@ -1,10 +1,11 @@ + true $(MSBuildThisFileDirectory)..\Polly.snk - true - latest enable - true + latest + true + 0024000004800000940000000602000000240000525341310004000001000100150819e3494f97263a3abdd18e5e0c47b04e6c0ede44a6c51d50b545d403ceeb7cbb32d18dbbbcdd1d88a87d7b73206b126be134b0609c36aa3cb31dd2e47e393293102809b8d77f192f3188618a42e651c14ebf05f8f5b76aa91b431642b23497ed82b65d63791cdaa31d4282a2d6cbabc3fe0745b6b6690c417cabf6a1349c diff --git a/eng/Library.targets b/eng/Library.targets index d43e3ed9a4..93ec813ed4 100644 --- a/eng/Library.targets +++ b/eng/Library.targets @@ -9,7 +9,6 @@ Michael Wolfenden, App vNext $(AllowedOutputExtensionsInPackageBuildOutputFolder);.pdb true - , PublicKey=0024000004800000940000000602000000240000525341310004000001000100150819e3494f97263a3abdd18e5e0c47b04e6c0ede44a6c51d50b545d403ceeb7cbb32d18dbbbcdd1d88a87d7b73206b126be134b0609c36aa3cb31dd2e47e393293102809b8d77f192f3188618a42e651c14ebf05f8f5b76aa91b431642b23497ed82b65d63791cdaa31d4282a2d6cbabc3fe0745b6b6690c417cabf6a1349c SHA256 @@ -43,21 +42,17 @@ - - - - <_Parameter1>DynamicProxyGenAssembly2, PublicKey=0024000004800000940000000602000000240000525341310004000001000100c547cac37abd99c8db225ef2f6c8a3602f3b3606cc9891605d02baa56104f4cfc0734aa39b93bf7852f7d9266654753cc297e7d2edfe0bac1cdcf9f717241550e0a7b191195b7667bb4f64bcb8e2121380fd1d9d46ad2d92d2d15605093924cceaf74c4861eff62abf69b9291ed0a340e113be11e6a7d3113e92484cf7045cc7 - - - + + + - + - + - + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/src/Polly.Core/Polly.Core.csproj b/src/Polly.Core/Polly.Core.csproj index 52496a861a..c2d35333fa 100644 --- a/src/Polly.Core/Polly.Core.csproj +++ b/src/Polly.Core/Polly.Core.csproj @@ -20,9 +20,10 @@ - - - + + + + diff --git a/src/Polly.Extensions/Polly.Extensions.csproj b/src/Polly.Extensions/Polly.Extensions.csproj index a5553cdfd1..a66e28d498 100644 --- a/src/Polly.Extensions/Polly.Extensions.csproj +++ b/src/Polly.Extensions/Polly.Extensions.csproj @@ -25,7 +25,7 @@ - + diff --git a/src/Polly.RateLimiting/Polly.RateLimiting.csproj b/src/Polly.RateLimiting/Polly.RateLimiting.csproj index 070f78052c..c02a013b4b 100644 --- a/src/Polly.RateLimiting/Polly.RateLimiting.csproj +++ b/src/Polly.RateLimiting/Polly.RateLimiting.csproj @@ -20,7 +20,7 @@ - + diff --git a/src/Polly/Polly.csproj b/src/Polly/Polly.csproj index 2a604bad57..b781ccbe32 100644 --- a/src/Polly/Polly.csproj +++ b/src/Polly/Polly.csproj @@ -19,7 +19,7 @@ - +