Skip to main content

Benchmarks

Automated results

Generated 2026-10-05 13:12 UTC from commit 99929295e05f. See the GitHub Actions run for logs and downloadable artifacts.

StackExchange.Redis is the baseline. A ratio below 1.00 means Respire completed the operation faster.

Visual comparison​

StackExchange.Redis has no built-in server-assisted client cache, so its values are ordinary server reads. Respire server reads are included for a like-for-like uncached comparison.

Client-cache hit time — net10.0StackExchange.Redis and Respire server reads vs Respire client-cache hit. Shorter bars are faster.
EXISTS hot
StackExchange.Redis106.3 μs (1.00×)
Respire server read104.7 μs (0.98×)
Respire cache hit356.5 ns (0.003×)
GET hot
StackExchange.Redis106.5 μs (1.00×)
Respire server read105 μs (0.99×)
Respire cache hit184.4 ns (0.002×)
GET missing hot
StackExchange.Redis104.9 μs (1.00×)
Respire server read104.6 μs (1.00×)
Respire cache hit153.8 ns (0.001×)
HGET hot
StackExchange.Redis104.5 μs (1.00×)
Respire server read102.6 μs (0.98×)
Respire cache hit422.2 ns (0.004×)
Selected operation time — net10.0Mean time. Shorter bars are faster.
GET
StackExchange.Redis105.6 μs (1.00×)
Respire105.1 μs (1.00×)
GET x200 pipelined
StackExchange.Redis1.7 μs (1.00×)
Respire1.6 μs (0.97×)
GET x50 concurrent
StackExchange.Redis3.4 μs (1.00×)
Respire3.1 μs (0.89×)
HGET
StackExchange.Redis107.4 μs (1.00×)
Respire108 μs (1.01×)
HSET
StackExchange.Redis109.1 μs (1.00×)
Respire108.2 μs (0.99×)
LPUSH+LPOP
StackExchange.Redis207.8 μs (1.00×)
Respire202.4 μs (0.97×)
SET 1KB
StackExchange.Redis106.3 μs (1.00×)
Respire106 μs (1.00×)

net10.0​

ClientSideCachingBenchmarks​


BenchmarkDotNet v0.15.8, Linux Ubuntu 24.04.5 LTS (Noble Numbat)
INTEL XEON PLATINUM 8573C 2.30GHz, 1 CPU, 4 logical and 2 physical cores
.NET SDK 10.0.401
[Host] : .NET 10.0.12 (10.0.12, 10.0.1226.42308), X64 RyuJIT x86-64-v4
Job-IDGKZI : .NET 10.0.12 (10.0.12, 10.0.1226.42308), X64 RyuJIT x86-64-v4

IterationCount=15 LaunchCount=2 WarmupCount=10

MethodCategoriesMeanErrorStdDevMedianOp/sRatioMannWhitney(5%)RatioSDGen0AllocatedAlloc Ratio
StackExchange_Exists_ServerReadEXISTS hot106,346.3 ns736.25 ns1,101.98 ns106,367.6 ns9,403.21.000Baseline0.01-296 B1.00
Respire_Exists_ServerReadEXISTS hot104,745.4 ns1,040.21 ns1,556.93 ns105,055.1 ns9,547.00.985Same0.02--0.00
Respire_Exists_ClientCacheHitEXISTS hot356.5 ns3.65 ns5.35 ns356.8 ns2,805,095.10.003Faster0.00--0.00
StackExchange_Get_ServerReadGET hot106,540.6 ns777.08 ns1,163.10 ns106,508.8 ns9,386.11.000Baseline0.02-528 B1.00
Respire_Get_ServerReadGET hot104,990.1 ns1,478.66 ns2,213.19 ns105,562.9 ns9,524.70.986Same0.02-64 B0.12
Respire_Get_ClientCacheHitGET hot184.4 ns2.35 ns3.44 ns184.8 ns5,423,051.70.002Faster0.000.000764 B0.12
StackExchange_GetMissing_ServerReadGET missing hot104,930.1 ns533.02 ns797.79 ns104,977.2 ns9,530.21.000Baseline0.01-416 B1.00
Respire_GetMissing_ServerReadGET missing hot104,638.5 ns1,260.85 ns1,887.18 ns105,097.3 ns9,556.70.997Same0.02--0.00
Respire_GetMissing_ClientCacheHitGET missing hot153.8 ns5.47 ns8.02 ns160.3 ns6,500,394.60.001Faster0.00--0.00
StackExchange_HGet_ServerReadHGET hot104,537.5 ns888.42 ns1,329.74 ns104,746.1 ns9,565.91.000Baseline0.02-544 B1.00
Respire_HGet_ServerReadHGET hot102,618.4 ns665.72 ns975.80 ns102,750.0 ns9,744.80.982Same0.02-64 B0.12
Respire_HGet_ClientCacheHitHGET hot422.2 ns4.95 ns7.25 ns425.8 ns2,368,306.20.004Faster0.000.000564 B0.12

CommonOperationsBenchmarks​


BenchmarkDotNet v0.15.8, Linux Ubuntu 24.04.5 LTS (Noble Numbat)
INTEL XEON PLATINUM 8573C 2.30GHz, 1 CPU, 4 logical and 2 physical cores
.NET SDK 10.0.401
[Host] : .NET 10.0.12 (10.0.12, 10.0.1226.42308), X64 RyuJIT x86-64-v4
Job-IDGKZI : .NET 10.0.12 (10.0.12, 10.0.1226.42308), X64 RyuJIT x86-64-v4

IterationCount=15 LaunchCount=2 WarmupCount=10

MethodCategoriesMeanErrorStdDevRatioMannWhitney(5%)RatioSDAllocatedAlloc Ratio
StackExchange_ExistsEXISTS103.544 μs0.6095 μs0.9123 μs1.00Baseline0.01296 B1.00
Respire_ExistsEXISTS102.890 μs0.6398 μs0.9378 μs0.99Same0.01-0.00
StackExchange_GetGET105.596 μs0.5087 μs0.7614 μs1.00Baseline0.01504 B1.00
Respire_GetGET105.073 μs0.7470 μs1.1181 μs1.00Same0.0148 B0.10
StackExchange_Get_SteadyStateGET x100 sequential92.671 μs1.2645 μs1.8535 μs1.00Baseline0.03338 B1.00
Respire_Get_SteadyStateGET x100 sequential89.002 μs1.0507 μs1.5727 μs0.96Same0.0350 B0.15
StackExchange_Get_PipelinedGET x200 pipelined1.650 μs0.0804 μs0.1203 μs1.01Baseline0.10289 B1.00
Respire_Get_PipelinedGET x200 pipelined1.600 μs0.0154 μs0.0220 μs0.97Same0.0760 B0.21
StackExchange_Get_ConcurrentGET x50 concurrent3.438 μs0.0482 μs0.0676 μs1.00Baseline0.03291 B1.00
Respire_Get_ConcurrentGET x50 concurrent3.067 μs0.0341 μs0.0510 μs0.89Faster0.0252 B0.18
StackExchange_HGetHGET107.397 μs1.1540 μs1.7272 μs1.00Baseline0.02520 B1.00
Respire_HGetHGET107.982 μs0.5022 μs0.7517 μs1.01Same0.0248 B0.09
StackExchange_HSetHSET109.111 μs0.6430 μs0.9625 μs1.00Baseline0.01328 B1.00
Respire_HSetHSET108.222 μs0.7221 μs1.0809 μs0.99Same0.01-0.00
StackExchange_IncrINCR108.766 μs0.4290 μs0.6421 μs1.00Baseline0.01296 B1.00
Respire_IncrINCR107.925 μs0.5532 μs0.8109 μs0.99Same0.01-0.00
StackExchange_LPushLPopLPUSH+LPOP207.837 μs1.9702 μs2.9488 μs1.00Baseline0.02760 B1.00
Respire_LPushLPopLPUSH+LPOP202.397 μs1.1360 μs1.6652 μs0.97Same0.02256 B0.34
StackExchange_PingPING107.422 μs0.5306 μs0.7941 μs1.00Baseline0.01304 B1.00
Respire_PingPING106.521 μs0.7594 μs1.1366 μs0.99Same0.01-0.00
StackExchange_Ping_SteadyStatePING x100 sequential92.442 μs0.9676 μs1.4483 μs1.00Baseline0.02242 B1.000
Respire_Ping_SteadyStatePING x100 sequential86.219 μs1.2443 μs1.8624 μs0.93Same0.022 B0.008
StackExchange_SAddSADD107.639 μs0.9489 μs1.4203 μs1.00Baseline0.02312 B1.00
Respire_SAddSADD104.576 μs0.4937 μs0.7081 μs0.97Same0.01-0.00
StackExchange_Set_10KBSET 10KB111.075 μs0.7520 μs1.1256 μs1.00Baseline0.01312 B1.00
Respire_Set_10KBSET 10KB109.147 μs0.4416 μs0.6473 μs0.98Same0.01-0.00
StackExchange_Set_SmallSET 13B107.626 μs0.4760 μs0.7124 μs1.00Baseline0.01312 B1.00
Respire_Set_SmallSET 13B105.216 μs0.5021 μs0.7359 μs0.98Same0.01-0.00
StackExchange_Set_1KBSET 1KB106.251 μs0.7431 μs1.1122 μs1.00Baseline0.01312 B1.00
Respire_Set_1KBSET 1KB106.012 μs0.6744 μs1.0094 μs1.00Same0.01-0.00
StackExchange_Set_SteadyStateSET x100 sequential91.594 μs0.8735 μs1.3074 μs1.00Baseline0.02250 B1.000
Respire_Set_SteadyStateSET x100 sequential87.842 μs0.7841 μs1.1736 μs0.96Same0.022 B0.008
StackExchange_SetDelSET+DEL202.928 μs1.5601 μs2.3351 μs1.00Baseline0.02648 B1.00
Respire_SetDelSET+DEL197.025 μs1.2804 μs1.9164 μs0.97Same0.01200 B0.31
StackExchange_SIsMemberSISMEMBER105.796 μs0.7726 μs1.1564 μs1.00Baseline0.02312 B1.00
Respire_SIsMemberSISMEMBER103.988 μs1.8350 μs2.7466 μs0.98Same0.03-0.00

net8.0​

ClientSideCachingBenchmarks​


BenchmarkDotNet v0.15.8, Linux Ubuntu 24.04.5 LTS (Noble Numbat)
AMD EPYC 7763 2.45GHz, 1 CPU, 4 logical and 2 physical cores
.NET SDK 10.0.401
[Host] : .NET 8.0.31 (8.0.31, 8.0.3126.42015), X64 RyuJIT x86-64-v3
Job-IDGKZI : .NET 8.0.31 (8.0.31, 8.0.3126.42015), X64 RyuJIT x86-64-v3

IterationCount=15 LaunchCount=2 WarmupCount=10

MethodCategoriesMeanErrorStdDevOp/sRatioMannWhitney(5%)Gen0AllocatedAlloc Ratio
StackExchange_Exists_ServerReadEXISTS hot187,086.9 ns841.31 ns1,259.23 ns5,345.11.000Baseline-296 B1.00
Respire_Exists_ServerReadEXISTS hot187,251.6 ns988.43 ns1,448.83 ns5,340.41.001Same--0.00
Respire_Exists_ClientCacheHitEXISTS hot672.9 ns1.03 ns1.37 ns1,486,175.00.004Faster--0.00
StackExchange_Get_ServerReadGET hot193,296.6 ns1,232.05 ns1,844.08 ns5,173.41.000Baseline-528 B1.00
Respire_Get_ServerReadGET hot188,717.1 ns926.05 ns1,357.39 ns5,298.90.976Same-64 B0.12
Respire_Get_ClientCacheHitGET hot385.7 ns6.33 ns9.08 ns2,592,799.50.002Faster0.003864 B0.12
StackExchange_GetMissing_ServerReadGET missing hot190,610.4 ns1,096.79 ns1,607.66 ns5,246.31.000Baseline-414 B1.00
Respire_GetMissing_ServerReadGET missing hot186,209.3 ns858.09 ns1,284.35 ns5,370.30.977Same--0.00
Respire_GetMissing_ClientCacheHitGET missing hot419.9 ns11.95 ns16.75 ns2,381,394.60.002Faster--0.00
StackExchange_HGet_ServerReadHGET hot193,926.6 ns806.80 ns1,207.58 ns5,156.61.000Baseline-544 B1.00
Respire_HGet_ServerReadHGET hot187,230.3 ns1,036.49 ns1,551.37 ns5,341.00.966Same-64 B0.12
Respire_HGet_ClientCacheHitHGET hot770.4 ns1.80 ns2.46 ns1,298,092.60.004Faster0.003864 B0.12

CommonOperationsBenchmarks​


BenchmarkDotNet v0.15.8, Linux Ubuntu 24.04.5 LTS (Noble Numbat)
AMD EPYC 7763 2.45GHz, 1 CPU, 4 logical and 2 physical cores
.NET SDK 10.0.401
[Host] : .NET 8.0.31 (8.0.31, 8.0.3126.42015), X64 RyuJIT x86-64-v3
Job-IDGKZI : .NET 8.0.31 (8.0.31, 8.0.3126.42015), X64 RyuJIT x86-64-v3

IterationCount=15 LaunchCount=2 WarmupCount=10

MethodCategoriesMeanErrorStdDevRatioMannWhitney(5%)RatioSDGen0AllocatedAlloc Ratio
StackExchange_ExistsEXISTS187.057 μs0.9789 μs1.4651 μs1.00Baseline0.01-296 B1.00
Respire_ExistsEXISTS186.393 μs0.9469 μs1.3879 μs1.00Same0.01--0.00
StackExchange_GetGET191.065 μs1.2243 μs1.8324 μs1.00Baseline0.01-504 B1.00
Respire_GetGET187.217 μs1.0240 μs1.5327 μs0.98Same0.01-48 B0.10
StackExchange_Get_SteadyStateGET x100 sequential175.522 μs1.3381 μs2.0028 μs1.00Baseline0.02-338 B1.00
Respire_Get_SteadyStateGET x100 sequential172.008 μs1.1393 μs1.6339 μs0.98Same0.01-50 B0.15
StackExchange_Get_PipelinedGET x200 pipelined2.444 μs0.0703 μs0.1052 μs1.00Baseline0.060.0098289 B1.00
Respire_Get_PipelinedGET x200 pipelined2.178 μs0.0172 μs0.0252 μs0.89Faster0.04-60 B0.21
StackExchange_Get_ConcurrentGET x50 concurrent5.395 μs0.0546 μs0.0800 μs1.00Baseline0.02-291 B1.00
Respire_Get_ConcurrentGET x50 concurrent5.125 μs0.0185 μs0.0254 μs0.95Same0.01-52 B0.18
StackExchange_HGetHGET193.094 μs0.9707 μs1.4529 μs1.00Baseline0.01-520 B1.00
Respire_HGetHGET186.478 μs0.8257 μs1.2358 μs0.97Same0.01-48 B0.09
StackExchange_HSetHSET189.865 μs0.6455 μs0.9462 μs1.00Baseline0.01-328 B1.00
Respire_HSetHSET188.822 μs0.7728 μs1.1567 μs0.99Same0.01--0.00
StackExchange_IncrINCR187.551 μs0.8629 μs1.2916 μs1.00Baseline0.01-296 B1.00
Respire_IncrINCR187.237 μs0.9711 μs1.4234 μs1.00Same0.01--0.00
StackExchange_LPushLPopLPUSH+LPOP376.697 μs2.4177 μs3.6188 μs1.00Baseline0.01-760 B1.00
Respire_LPushLPopLPUSH+LPOP363.751 μs1.6875 μs2.5258 μs0.97Same0.01-256 B0.34
StackExchange_PingPING185.137 μs0.8010 μs1.1740 μs1.00Baseline0.01-304 B1.00
Respire_PingPING183.693 μs1.1135 μs1.6666 μs0.99Same0.01--0.00
StackExchange_Ping_SteadyStatePING x100 sequential172.717 μs1.4026 μs2.0994 μs1.00Baseline0.02-242 B1.000
Respire_Ping_SteadyStatePING x100 sequential169.274 μs1.5440 μs2.3110 μs0.98Same0.02-2 B0.008
StackExchange_SAddSADD187.602 μs0.8707 μs1.2763 μs1.00Baseline0.01-312 B1.00
Respire_SAddSADD187.364 μs0.7379 μs1.0583 μs1.00Same0.01--0.00
StackExchange_Set_10KBSET 10KB198.854 μs0.7887 μs1.1561 μs1.00Baseline0.01-312 B1.00
Respire_Set_10KBSET 10KB197.725 μs0.6930 μs0.9939 μs0.99Same0.01--0.00
StackExchange_Set_SmallSET 13B189.211 μs0.5717 μs0.8557 μs1.00Baseline0.01-312 B1.00
Respire_Set_SmallSET 13B189.125 μs1.0215 μs1.5290 μs1.00Same0.01--0.00
StackExchange_Set_1KBSET 1KB190.361 μs0.8789 μs1.3155 μs1.00Baseline0.01-312 B1.00
Respire_Set_1KBSET 1KB189.772 μs0.9551 μs1.4295 μs1.00Same0.01--0.00
StackExchange_Set_SteadyStateSET x100 sequential177.927 μs1.1628 μs1.7404 μs1.00Baseline0.01-250 B1.000
Respire_Set_SteadyStateSET x100 sequential174.619 μs1.0232 μs1.5315 μs0.98Same0.01-2 B0.008
StackExchange_SetDelSET+DEL370.024 μs1.6116 μs2.3623 μs1.00Baseline0.01-648 B1.00
Respire_SetDelSET+DEL360.349 μs2.6163 μs3.9159 μs0.97Same0.01-200 B0.31
StackExchange_SIsMemberSISMEMBER187.753 μs0.7653 μs1.1455 μs1.00Baseline0.01-312 B1.00
Respire_SIsMemberSISMEMBER187.263 μs0.8344 μs1.2489 μs1.00Same0.01--0.00

Reading the results​

Treat shared-runner measurements as directional evidence. Validate important decisions against your payload sizes, concurrency, Redis deployment, and network.