Skip to content

Performance

Foundatio.Mediator aims to get as close to direct method call performance as possible while providing a full-featured mediator with excellent developer ergonomics. Through C# interceptors and source generators, we eliminate runtime reflection entirely.

Benchmark Results

📊 Last Updated: 2026-02-23

Commands

Process a message with no return value.

MethodMeanAllocated
Direct_Command0.0000 ns0 B
Foundatio_Command0.0584 ns0 B
MediatorNet_Command8.4553 ns0 B
ImmediateHandlers_Command11.0105 ns0 B
MediatR_Command32.3613 ns128 B
Wolverine_Command176.5181 ns704 B
MassTransit_Command1,826.2737 ns4,912 B

Queries

Request/response dispatch returning an Order object.

MethodMeanAllocated
Direct_Query21.1054 ns48 B
Foundatio_Query22.7625 ns48 B
MediatorNet_Query25.0262 ns48 B
ImmediateHandlers_Query29.5762 ns48 B
MediatR_Query53.4603 ns248 B
MediatR_QueryWithDependencies124.3021 ns600 B
Wolverine_Query241.9654 ns864 B
MassTransit_Query6,067.4272 ns13,144 B

Events (Publish)

Notification dispatched to 2 handlers.

MethodMeanAllocated
Direct_Publish0.0052 ns0 B
MediatorNet_Publish5.6175 ns0 B
Foundatio_Publish16.2971 ns0 B
ImmediateHandlers_Publish51.8625 ns32 B
MediatR_Publish52.5791 ns440 B
Wolverine_Publish1,755.3777 ns2,840 B
MassTransit_Publish2,951.8865 ns7,456 B

Full Query (Dependencies + Middleware)

Query where handler has an injected service (IOrderService) and timing middleware (Before/Finally or IPipelineBehavior).

MethodMeanAllocated
Direct_FullQuery62.9251 ns160 B
MediatorNet_FullQuery73.6510 ns88 B
ImmediateHandlers_FullQuery74.1282 ns88 B
Foundatio_FullQuery77.3365 ns88 B
Wolverine_FullQuery284.2368 ns944 B
MassTransit_FullQuery5,914.7751 ns13,144 B

Cascading Messages

CreateOrder returns an Order and publishes OrderCreatedEvent to 2 handlers. Foundatio uses tuple returns for automatic cascading; other libraries publish manually.

MethodMeanAllocated
Direct_CascadingMessages26.9792 ns144 B
MediatorNet_CascadingMessages36.7020 ns72 B
Foundatio_CascadingMessages53.6296 ns72 B
ImmediateHandlers_CascadingMessages82.9136 ns104 B
MediatR_CascadingMessages113.6711 ns744 B
Wolverine_CascadingMessages2,220.3872 ns4,056 B
MassTransit_CascadingMessages8,388.0615 ns20,848 B

Short-Circuit Middleware

Middleware returns cached result; handler is never invoked. Each library uses its idiomatic short-circuit approach (IPipelineBehavior, HandlerResult.ShortCircuit, HandlerContinuation.Stop, etc.).

MethodMeanAllocated
Direct_ShortCircuit0.2052 ns0 B
Foundatio_ShortCircuit5.1399 ns0 B
MediatorNet_ShortCircuit8.2942 ns0 B
ImmediateHandlers_ShortCircuit9.0116 ns0 B
MediatR_ShortCircuit48.3730 ns416 B
Wolverine_ShortCircuit203.9298 ns824 B
MassTransit_ShortCircuit5,525.8000 ns12,224 B

Running Benchmarks Locally

bash
cd benchmarks/Foundatio.Mediator.Benchmarks
dotnet run -c Release

Released under the MIT License.