Skip to main content

Benchmark Results

Live benchmark comparisons between Dekaf and Confluent.Kafka, automatically updated on every commit to main.

Last Updated: 2026-03-22 15:57 UTC

info

These benchmarks run on GitHub Actions (ubuntu-latest) using BenchmarkDotNet. Ratio < 1.0 means Dekaf is faster than Confluent.Kafka

Producer Benchmarks

Comparing Dekaf vs Confluent.Kafka for message production across different scenarios.

MethodCategoriesMessageSizeBatchSizeMeanErrorStdDevRatioRatioSDGen0Gen1AllocatedAlloc Ratio
Confluent_ProduceBatchBatchProduce1001005,913.64 μs111.984 μs74.071 μs1.000.02--106.54 KB1.00
Dekaf_ProduceBatchBatchProduce1001001,338.65 μs149.387 μs98.810 μs0.230.02--35.83 KB0.34
Confluent_ProduceBatchBatchProduce10010007,242.95 μs93.852 μs62.077 μs1.000.0131.250015.62501062.81 KB1.00
Dekaf_ProduceBatchBatchProduce10010002,257.62 μs57.221 μs34.051 μs0.310.0115.62507.8125488.02 KB0.46
Confluent_ProduceBatchBatchProduce10001006,468.26 μs24.640 μs14.663 μs1.000.007.8125-194.04 KB1.00
Dekaf_ProduceBatchBatchProduce10001001,115.13 μs27.604 μs16.427 μs0.170.00--39.28 KB0.20
Confluent_ProduceBatchBatchProduce100010008,991.68 μs1,046.170 μs547.167 μs1.000.0878.125031.25001937.82 KB1.00
Dekaf_ProduceBatchBatchProduce100010005,407.75 μs484.469 μs320.447 μs0.600.0546.875015.62501225.2 KB0.63
Confluent_FireAndForgetFireAndForget100100123.17 μs5.228 μs3.458 μs1.000.041.7090-42.09 KB1.00
Dekaf_FireAndForgetFireAndForget10010058.69 μs6.282 μs4.155 μs0.480.03--6.81 KB0.16
Confluent_FireAndForgetFireAndForget10010001,261.30 μs39.552 μs26.161 μs1.000.0315.6250-421.32 KB1.00
Dekaf_FireAndForgetFireAndForget1001000678.08 μs113.453 μs67.514 μs0.540.05--43.97 KB0.10
Confluent_FireAndForgetFireAndForget1000100NANANA??NANANA?
Dekaf_FireAndForgetFireAndForget1000100459.95 μs26.742 μs17.688 μs??--8.37 KB?
Confluent_FireAndForgetFireAndForget10001000NANANA??NANANA?
Dekaf_FireAndForgetFireAndForget100010004,306.57 μs137.199 μs81.645 μs??--84.66 KB?
Confluent_ProduceSingleSingleProduce1001005,366.03 μs17.476 μs11.560 μs1.000.00--1.18 KB1.00
Dekaf_ProduceSingleSingleProduce1001001,254.54 μs25.299 μs16.734 μs0.230.00--1.61 KB1.36
Confluent_ProduceSingleSingleProduce10010005,368.40 μs17.672 μs11.689 μs1.000.00--1.18 KB1.00
Dekaf_ProduceSingleSingleProduce10010001,236.80 μs28.179 μs18.639 μs0.230.00--1.61 KB1.36
Confluent_ProduceSingleSingleProduce10001005,379.24 μs10.845 μs6.454 μs1.000.00--2.06 KB1.00
Dekaf_ProduceSingleSingleProduce10001001,207.71 μs33.761 μs22.331 μs0.220.00--1.61 KB0.78
Confluent_ProduceSingleSingleProduce100010005,363.40 μs8.927 μs5.905 μs1.000.00--2.06 KB1.00
Dekaf_ProduceSingleSingleProduce100010001,146.42 μs13.314 μs8.806 μs0.210.00--1.61 KB0.78

Benchmarks with issues: ProducerBenchmarks.Confluent_FireAndForget: Job-CVXFWD(IterationCount=10, RunStrategy=Throughput, WarmupCount=3) [MessageSize=1000, BatchSize=100] ProducerBenchmarks.Confluent_FireAndForget: Job-CVXFWD(IterationCount=10, RunStrategy=Throughput, WarmupCount=3) [MessageSize=1000, BatchSize=1000]

Consumer Benchmarks

Comparing Dekaf vs Confluent.Kafka for message consumption.

MethodCategoriesMessageCountMessageSizeMeanErrorStdDevRatioAllocatedAlloc Ratio
Confluent_ConsumeAllConsumeAll1001003.168 s0.0034 s0.0009 s1.0076592 B1.00
Dekaf_ConsumeAllConsumeAll1001003.011 s0.0020 s0.0005 s0.95133448 B1.74
Confluent_ConsumeAllConsumeAll10010003.165 s0.0026 s0.0007 s1.00256544 B1.00
Dekaf_ConsumeAllConsumeAll10010003.009 s0.0045 s0.0007 s0.95320856 B1.25
Confluent_ConsumeAllConsumeAll10001003.165 s0.0021 s0.0006 s1.00616592 B1.00
Dekaf_ConsumeAllConsumeAll10001003.010 s0.0025 s0.0006 s0.95542512 B0.88
Confluent_ConsumeAllConsumeAll100010003.165 s0.0044 s0.0012 s1.002424608 B1.00
Dekaf_ConsumeAllConsumeAll100010003.010 s0.0026 s0.0004 s0.952289088 B0.94
Confluent_PollSinglePollSingle1001003.157 s0.0015 s0.0004 s1.00-NA
Dekaf_PollSinglePollSingle1001003.006 s0.0049 s0.0008 s0.9531720 BNA
Confluent_PollSinglePollSingle10010003.156 s0.0053 s0.0014 s1.00-NA
Dekaf_PollSinglePollSingle10010003.006 s0.0016 s0.0002 s0.9534296 BNA
Confluent_PollSinglePollSingle10001003.157 s0.0037 s0.0010 s1.00-NA
Dekaf_PollSinglePollSingle10001003.006 s0.0016 s0.0004 s0.9532416 BNA
Confluent_PollSinglePollSingle100010003.156 s0.0035 s0.0009 s1.00-NA
Dekaf_PollSinglePollSingle100010003.006 s0.0022 s0.0006 s0.9536360 BNA

Protocol Benchmarks

Zero-allocation wire protocol serialization/deserialization.

tip

Allocated = - means zero heap allocations - the goal of Dekaf's design!

MethodMeanErrorStdDevAllocated
'Write 1000 Int32s'33.256 μs13.0221 μs7.7493 μs-
'Write 100 Strings (100 chars)'13.601 μs0.2616 μs0.1730 μs-
'Write 100 CompactStrings'11.224 μs0.0978 μs0.0511 μs-
'Write 1000 VarInts'36.555 μs17.8534 μs10.6243 μs-
'Read 1000 Int32s'16.521 μs10.0349 μs5.9716 μs-
'Read 1000 VarInts'29.695 μs8.4714 μs5.0412 μs-
'Write RecordBatch (10 records)'17.055 μs0.4948 μs0.2945 μs-
'Read RecordBatch (10 records)'4.007 μs0.1558 μs0.0815 μs-

Serializer Benchmarks

MethodMeanErrorStdDevRatioRatioSDAllocatedAlloc Ratio
'Serialize String (10 chars)'1,433.1 ns76.23 ns50.42 ns0.330.02-NA
'Serialize String (100 chars)'1,551.0 ns143.29 ns94.78 ns0.360.02-NA
'Serialize String (1000 chars)'1,916.4 ns414.49 ns274.16 ns0.440.06-NA
'Deserialize String'2,874.9 ns36.05 ns21.45 ns0.670.02-NA
'Serialize Int32'713.0 ns64.41 ns38.33 ns0.170.01-NA
'Serialize 100 Messages (key+value)'32,273.4 ns370.32 ns220.37 ns7.480.26-NA
'ArrayBufferWriter + Copy'4,321.6 ns269.47 ns160.36 ns1.000.05-NA
'PooledBufferWriter Direct'3,662.2 ns206.22 ns122.72 ns0.850.04-NA

Compression Benchmarks

MethodMeanErrorStdDevAllocated
'Snappy Compress 1KB'11.210 μs0.2835 μs0.1875 μs-
'Snappy Compress 1MB'529.566 μs23.2052 μs15.3488 μs-
'Snappy Decompress 1KB'9.823 μs0.3748 μs0.2479 μs-
'Snappy Decompress 1MB'1,622.605 μs30.4440 μs18.1167 μs-

How to Read These Results

  • Mean: Average execution time
  • Error: Half of 99.9% confidence interval
  • StdDev: Standard deviation of all measurements
  • Ratio: Performance relative to baseline (Confluent.Kafka)
    • < 1.0 = Dekaf is faster
    • > 1.0 = Confluent is faster
    • 1.0 = Same performance
  • Allocated: Heap memory allocated per operation
    • - = Zero allocations (ideal!)

Benchmarks are automatically run on every push to main.