Skip to main content

Benchmarks

Automated results

Generated 2026-10-18 03:41 UTC from commit 37af85aa0dac. 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.Redis190.1 μs (1.00×)
Respire server read188.4 μs (0.99×)
Respire cache hit351.8 ns (0.002×)
GET hot
StackExchange.Redis192.6 μs (1.00×)
Respire server read188.8 μs (0.98×)
Respire cache hit141.7 ns (0.001×)
GET missing hot
StackExchange.Redis191.6 μs (1.00×)
Respire server read188.7 μs (0.98×)
Respire cache hit147.9 ns (0.001×)
HGET hot
StackExchange.Redis193.7 μs (1.00×)
Respire server read191.8 μs (0.99×)
Respire cache hit400.2 ns (0.002×)
Selected operation time — net10.0Mean time. Shorter bars are faster.
GET
StackExchange.Redis191.3 μs (1.00×)
Respire188.9 μs (0.99×)
GET x200 pipelined
StackExchange.Redis2.5 μs (1.00×)
Respire2.1 μs (0.85×)
GET x50 concurrent
StackExchange.Redis5.4 μs (1.00×)
Respire4.9 μs (0.92×)
HGET
StackExchange.Redis193 μs (1.00×)
Respire189.2 μs (0.98×)
HSET
StackExchange.Redis192.4 μs (1.00×)
Respire193.9 μs (1.01×)
LPUSH+LPOP
StackExchange.Redis372.8 μs (1.00×)
Respire369.1 μs (0.99×)
SET 1KB
StackExchange.Redis193.6 μs (1.00×)
Respire192 μs (0.99×)

net10.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.402
[Host] : .NET 10.0.13 (10.0.13, 10.0.1326.50504), X64 RyuJIT x86-64-v3
Job-IDGKZI : .NET 10.0.13 (10.0.13, 10.0.1326.50504), X64 RyuJIT x86-64-v3

IterationCount=15 LaunchCount=2 WarmupCount=10

MethodCategoriesMeanErrorStdDevOp/sRatioMannWhitney(5%)RatioSDAllocatedAlloc Ratio
StackExchange_Exists_ServerReadEXISTS hot190,116.5 ns654.26 ns979.27 ns5,259.91.000Baseline0.01296 B1.00
Respire_Exists_ServerReadEXISTS hot188,368.8 ns2,173.11 ns3,185.32 ns5,308.70.991Same0.02-0.00
Respire_Exists_ClientCacheHitEXISTS hot351.8 ns0.78 ns1.09 ns2,842,420.30.002Faster0.00-0.00
StackExchange_Get_ServerReadGET hot192,608.2 ns576.98 ns863.59 ns5,191.91.000Baseline0.01528 B1.00
Respire_Get_ServerReadGET hot188,794.6 ns1,413.86 ns2,072.42 ns5,296.80.980Same0.0164 B0.12
Respire_Get_ClientCacheHitGET hot141.7 ns0.37 ns0.50 ns7,056,461.90.001Faster0.00-0.00
StackExchange_GetMissing_ServerReadGET missing hot191,642.6 ns1,346.07 ns2,014.73 ns5,218.01.000Baseline0.01416 B1.00
Respire_GetMissing_ServerReadGET missing hot188,739.6 ns658.81 ns965.67 ns5,298.30.985Same0.01-0.00
Respire_GetMissing_ClientCacheHitGET missing hot147.9 ns2.58 ns3.36 ns6,760,121.20.001Faster0.00-0.00
StackExchange_HGet_ServerReadHGET hot193,749.2 ns445.93 ns653.64 ns5,161.31.000Baseline0.00544 B1.00
Respire_HGet_ServerReadHGET hot191,837.7 ns1,311.51 ns1,963.00 ns5,212.70.990Same0.0164 B0.12
Respire_HGet_ClientCacheHitHGET hot400.2 ns3.08 ns4.00 ns2,498,721.30.002Faster0.00-0.00

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.402
[Host] : .NET 10.0.13 (10.0.13, 10.0.1326.50504), X64 RyuJIT x86-64-v3
Job-IDGKZI : .NET 10.0.13 (10.0.13, 10.0.1326.50504), X64 RyuJIT x86-64-v3

IterationCount=15 LaunchCount=2 WarmupCount=10

MethodCategoriesMeanErrorStdDevRatioMannWhitney(5%)RatioSDGen0AllocatedAlloc Ratio
StackExchange_ExistsEXISTS189.400 μs0.6333 μs0.9283 μs1.00Baseline0.01-296 B1.00
Respire_ExistsEXISTS188.834 μs0.4503 μs0.6740 μs1.00Same0.01--0.00
StackExchange_GetGET191.310 μs0.5196 μs0.7616 μs1.00Baseline0.01-504 B1.00
Respire_GetGET188.880 μs0.4207 μs0.6167 μs0.99Same0.01-48 B0.10
StackExchange_GetLongGET long191.579 μs0.5711 μs0.8548 μs1.00Baseline0.01-416 B1.00
Respire_GetLongGET long189.069 μs0.4683 μs0.6864 μs0.99Same0.01--0.00
StackExchange_Get_SteadyStateGET x100 sequential175.338 μs1.5099 μs2.2600 μs1.00Baseline0.02-338 B1.00
Respire_Get_SteadyStateGET x100 sequential173.618 μs0.8369 μs1.2526 μs0.99Same0.01-50 B0.15
StackExchange_Get_PipelinedGET x200 pipelined2.468 μs0.0243 μs0.0364 μs1.00Baseline0.020.0098289 B1.00
Respire_Get_PipelinedGET x200 pipelined2.098 μs0.0067 μs0.0096 μs0.85Faster0.01-49 B0.17
StackExchange_Get_ConcurrentGET x50 concurrent5.359 μs0.0423 μs0.0633 μs1.00Baseline0.02-291 B1.00
Respire_Get_ConcurrentGET x50 concurrent4.928 μs0.0251 μs0.0344 μs0.92Faster0.01-52 B0.18
StackExchange_HGetHGET193.032 μs0.4706 μs0.7043 μs1.00Baseline0.01-520 B1.00
Respire_HGetHGET189.179 μs0.4476 μs0.6561 μs0.98Same0.00-48 B0.09
StackExchange_HSetHSET192.435 μs0.5183 μs0.7597 μs1.00Baseline0.01-328 B1.00
Respire_HSetHSET193.927 μs1.1796 μs1.7290 μs1.01Same0.01--0.00
StackExchange_IncrINCR190.427 μs0.5835 μs0.8733 μs1.00Baseline0.01-296 B1.00
Respire_IncrINCR188.922 μs0.5656 μs0.8112 μs0.99Same0.01--0.00
StackExchange_LPushLPopLPUSH+LPOP372.787 μs0.8317 μs1.2449 μs1.00Baseline0.00-760 B1.00
Respire_LPushLPopLPUSH+LPOP369.107 μs1.0952 μs1.6053 μs0.99Same0.01-256 B0.34
StackExchange_PingPING188.250 μs0.4137 μs0.6064 μs1.00Baseline0.00-304 B1.00
Respire_PingPING187.454 μs0.4068 μs0.5703 μs1.00Same0.00--0.00
StackExchange_Ping_SteadyStatePING x100 sequential172.847 μs1.2623 μs1.8893 μs1.00Baseline0.02-242 B1.000
Respire_Ping_SteadyStatePING x100 sequential171.198 μs0.7137 μs1.0683 μs0.99Same0.01-2 B0.008
StackExchange_SAddSADD190.797 μs0.4578 μs0.6852 μs1.00Baseline0.01-312 B1.00
Respire_SAddSADD188.979 μs0.8832 μs1.3219 μs0.99Same0.01--0.00
StackExchange_Set_10KBSET 10KB202.189 μs0.5506 μs0.8240 μs1.00Baseline0.01-311 B1.00
Respire_Set_10KBSET 10KB202.020 μs0.4789 μs0.6868 μs1.00Same0.01--0.00
StackExchange_Set_SmallSET 13B192.332 μs0.5173 μs0.7419 μs1.00Baseline0.01-312 B1.00
Respire_Set_SmallSET 13B191.007 μs0.6426 μs0.9618 μs0.99Same0.01--0.00
StackExchange_Set_1KBSET 1KB193.607 μs0.4553 μs0.6815 μs1.00Baseline0.00-312 B1.00
Respire_Set_1KBSET 1KB191.975 μs1.0756 μs1.5766 μs0.99Same0.01--0.00
StackExchange_Set_SteadyStateSET x100 sequential176.163 μs1.0490 μs1.5376 μs1.00Baseline0.01-250 B1.000
Respire_Set_SteadyStateSET x100 sequential174.901 μs1.5910 μs2.3814 μs0.99Same0.02-2 B0.008
StackExchange_SetDelSET+DEL368.485 μs0.6819 μs1.0207 μs1.00Baseline0.00-648 B1.00
Respire_SetDelSET+DEL365.317 μs0.9630 μs1.4414 μs0.99Same0.00-200 B0.31
StackExchange_SIsMemberSISMEMBER190.319 μs0.3427 μs0.5024 μs1.00Baseline0.00-312 B1.00
Respire_SIsMemberSISMEMBER189.110 μs0.5430 μs0.7960 μs0.99Same0.00--0.00

PubSubComparisonBenchmarks​


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.402
[Host] : .NET 10.0.13 (10.0.13, 10.0.1326.50504), X64 RyuJIT x86-64-v3
Job-IDGKZI : .NET 10.0.13 (10.0.13, 10.0.1326.50504), X64 RyuJIT x86-64-v3

IterationCount=15 LaunchCount=2 WarmupCount=10

MethodMeanErrorStdDevRatioMannWhitney(5%)AllocatedAlloc Ratio
StackExchange_PublishAndConsume225.3 μs0.80 μs1.12 μs1.00Baseline672 B1.00
Respire_PublishAndConsume227.9 μs0.60 μs0.86 μs1.01Same400 B0.60

Reading the results​

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