This library prioritizes performance as a core design principle. While it doesn't aim to replace feature-rich libraries like
Michael Altmann's excellent FluentResults or
Steve Smith's popular Ardalis.Result. LightResults strives
for exceptional performance by intentionally simplifying its API.
Comparison
Below are comparisons of LightResults against other result pattern implementations.
These comparison results were produced using LightResults 9.0.5 and BenchmarkDotNet 0.15.8.
The LightResults rows below have been refreshed with the current development benchmark values from tools/LightResults.DevelopBenchmarks.
The comparison implementations used the following package versions:
FluentResults 4.0.0
Ardalis.Result 10.1.0
Returning results
Returning a successful result
Method
Mean
Ratio
Allocated
LightResults: Result.Success()
2.532 ns
1.00
-
FluentResults: Result.Ok()
46.564 ns
18.39
560 B
ArdalisResult: Result.Success()
42.761 ns
16.89
720 B
Returning a successful value result
Method
Mean
Ratio
Allocated
LightResults: Result.Success<T>(value)
2.448 ns
1.00
-
FluentResults: Result.Ok<T>(value)
148.860 ns
60.81
1120 B
ArdalisResult: Result<T>.Success(value)
41.865 ns
17.10
640 B
Returning a failed result
Method
Mean
Ratio
Allocated
LightResults: Result.Failure()
2.532 ns
1.00
-
FluentResults: Result.Fail("")
282.372 ns
111.52
2640 B
ArdalisResult: Result.Error()
47.295 ns
18.68
720 B
Returning a failed result with an error message
Method
Mean
Ratio
Allocated
Alloc Ratio
LightResults: Result.Failure(error)
22.796 ns
1.00
240 B
1.00
FluentResults: Result.Fail(errorMessage)
120.913 ns
5.30
1120 B
4.67
ArdalisResult: Result.Error(errorMessage)
64.953 ns
2.85
1040 B
4.33
Returning a failed value result
Method
Mean
Ratio
Allocated
LightResults: Result.Failure<T>()
2.389 ns
1.00
-
FluentResults: Result.Fail<T>("")
285.110 ns
119.34
2720 B
ArdalisResult: Result<T>.Error()
53.565 ns
22.42
640 B
Returning a failed value result with an error message