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-14 11:53 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,931.01 μs71.565 μs47.336 μs1.000.01--106.94 KB1.00
Dekaf_ProduceBatchBatchProduce1001001,362.99 μs67.892 μs40.401 μs0.230.01--47.35 KB0.44
Confluent_ProduceBatchBatchProduce10010007,282.88 μs70.299 μs46.498 μs1.000.0131.250015.62501063.29 KB1.00
Dekaf_ProduceBatchBatchProduce10010002,290.42 μs105.874 μs63.004 μs0.310.0123.43757.8125577.51 KB0.54
Confluent_ProduceBatchBatchProduce10001006,543.76 μs17.821 μs9.321 μs1.000.007.8125-194.43 KB1.00
Dekaf_ProduceBatchBatchProduce10001001,148.01 μs55.850 μs33.235 μs0.180.00--60.12 KB0.31
Confluent_ProduceBatchBatchProduce100010009,494.19 μs1,999.892 μs1,190.104 μs1.010.1678.125031.25001938.46 KB1.00
Dekaf_ProduceBatchBatchProduce100010005,412.45 μs343.502 μs204.413 μs0.580.0746.875015.62501425.73 KB0.74
Confluent_FireAndForgetFireAndForget100100112.24 μs47.699 μs31.550 μs1.070.401.9531-49.08 KB1.00
Dekaf_FireAndForgetFireAndForget10010062.42 μs8.124 μs4.835 μs0.600.160.2441-6.48 KB0.13
Confluent_FireAndForgetFireAndForget10010001,275.58 μs26.347 μs17.427 μs1.000.0215.6250-421.63 KB1.00
Dekaf_FireAndForgetFireAndForget1001000709.34 μs78.219 μs51.737 μs0.560.04--89.25 KB0.21
Confluent_FireAndForgetFireAndForget1000100NANANA??NANANA?
Dekaf_FireAndForgetFireAndForget1000100478.27 μs35.369 μs21.048 μs??0.4883-21.08 KB?
Confluent_FireAndForgetFireAndForget10001000NANANA??NANANA?
Dekaf_FireAndForgetFireAndForget100010004,621.48 μs638.369 μs379.883 μs??7.8125-212.99 KB?
Confluent_ProduceSingleSingleProduce1001005,386.42 μs16.885 μs11.169 μs1.000.00--1.57 KB1.00
Dekaf_ProduceSingleSingleProduce1001001,241.39 μs58.540 μs34.836 μs0.230.01--5.03 KB3.21
Confluent_ProduceSingleSingleProduce10010005,368.04 μs17.411 μs10.361 μs1.000.00--1.56 KB1.00
Dekaf_ProduceSingleSingleProduce10010001,303.01 μs49.939 μs33.031 μs0.240.01--5.03 KB3.22
Confluent_ProduceSingleSingleProduce10001005,369.71 μs16.119 μs9.592 μs1.000.00--2.43 KB1.00
Dekaf_ProduceSingleSingleProduce10001001,315.10 μs50.045 μs33.102 μs0.240.01--5.03 KB2.07
Confluent_ProduceSingleSingleProduce100010005,368.15 μs9.121 μs5.428 μs1.000.00--2.43 KB1.00
Dekaf_ProduceSingleSingleProduce100010001,115.77 μs35.831 μs18.741 μs0.210.00--5.03 KB2.07

Benchmarks with issues: ProducerBenchmarks.Confluent_FireAndForget: Job-TNLLLI(IterationCount=10, RunStrategy=Throughput, WarmupCount=3) [MessageSize=1000, BatchSize=100] ProducerBenchmarks.Confluent_FireAndForget: Job-TNLLLI(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.0038 s0.0006 s1.0076592 B1.00
Dekaf_ConsumeAllConsumeAll1001003.011 s0.0036 s0.0006 s0.95136096 B1.78
Confluent_ConsumeAllConsumeAll10010003.165 s0.0050 s0.0008 s1.00256592 B1.00
Dekaf_ConsumeAllConsumeAll10010003.010 s0.0041 s0.0011 s0.95327856 B1.28
Confluent_ConsumeAllConsumeAll10001003.165 s0.0018 s0.0005 s1.00616592 B1.00
Dekaf_ConsumeAllConsumeAll10001003.011 s0.0052 s0.0013 s0.95472272 B0.77
Confluent_ConsumeAllConsumeAll100010003.165 s0.0018 s0.0005 s1.002424608 B1.00
Dekaf_ConsumeAllConsumeAll100010003.011 s0.0007 s0.0002 s0.952286600 B0.94
Confluent_PollSinglePollSingle1001003.157 s0.0037 s0.0010 s1.00-NA
Dekaf_PollSinglePollSingle1001003.006 s0.0021 s0.0005 s0.9531784 BNA
Confluent_PollSinglePollSingle10010003.157 s0.0019 s0.0003 s1.00-NA
Dekaf_PollSinglePollSingle10010003.007 s0.0020 s0.0005 s0.9534640 BNA
Confluent_PollSinglePollSingle10001003.157 s0.0038 s0.0010 s1.00-NA
Dekaf_PollSinglePollSingle10001003.006 s0.0013 s0.0003 s0.9532616 BNA
Confluent_PollSinglePollSingle100010003.157 s0.0039 s0.0010 s1.00-NA
Dekaf_PollSinglePollSingle100010003.006 s0.0017 s0.0003 s0.9535792 BNA

Protocol Benchmarks

Zero-allocation wire protocol serialization/deserialization.

tip

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

MethodMeanErrorStdDevMedianAllocated
'Write 1000 Int32s'20.987 μs9.4948 μs5.6502 μs22.072 μs-
'Write 100 Strings (100 chars)'13.422 μs0.3211 μs0.2124 μs13.450 μs-
'Write 100 CompactStrings'11.317 μs0.1929 μs0.1276 μs11.322 μs-
'Write 1000 VarInts'34.771 μs12.7017 μs7.5586 μs37.374 μs-
'Read 1000 Int32s'17.396 μs14.4728 μs8.6126 μs22.151 μs-
'Read 1000 VarInts'29.935 μs14.3853 μs8.5604 μs34.084 μs-
'Write RecordBatch (10 records)'21.088 μs2.2757 μs1.3542 μs21.429 μs-
'Read RecordBatch (10 records)'4.321 μs0.2113 μs0.1397 μs4.319 μs-

Serializer Benchmarks

MethodMeanErrorStdDevRatioRatioSDAllocatedAlloc Ratio
'Serialize String (10 chars)'1,496.7 ns229.12 ns136.35 ns0.360.03-NA
'Serialize String (100 chars)'1,634.8 ns126.99 ns83.99 ns0.400.02-NA
'Serialize String (1000 chars)'1,577.2 ns37.96 ns19.85 ns0.380.01-NA
'Deserialize String'2,937.0 ns97.86 ns58.23 ns0.710.02-NA
'Serialize Int32'646.4 ns44.55 ns26.51 ns0.160.01-NA
'Serialize 100 Messages (key+value)'32,499.2 ns304.97 ns181.49 ns7.860.17-NA
'ArrayBufferWriter + Copy'4,136.3 ns137.44 ns90.91 ns1.000.03-NA
'PooledBufferWriter Direct'3,529.3 ns312.95 ns186.23 ns0.850.05-NA

Compression Benchmarks

MethodMeanErrorStdDevAllocated
'Snappy Compress 1KB'13.908 μs1.872 μs1.1140 μs-
'Snappy Compress 1MB'926.587 μs11.170 μs5.8424 μs-
'Snappy Decompress 1KB'9.683 μs1.322 μs0.6917 μs-
'Snappy Decompress 1MB'2,059.509 μs748.319 μs494.9665 μ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.