Skip to main content

Benchmarks

The HiveMQtt GitHub repository provides benchmarks built using BenchmarkDotNet, a .NET library for benchmarking. These benchmarks measure the performance of various messaging operations against any MQTT broker.

Running Benchmarks

To run the benchmarks yourself, execute:

cd Benchmarks/ClientBenchmarkApp
dotnet run ClientBenchmarkApp.csproj -c Release

Results

The benchmarks provide insights into the performance of different messaging methods under various scenarios. Results below are from a local MacBook Pro against a HiveMQ v4 broker running in a Docker container over localhost.

Legend

TermDescription
MeanArithmetic mean of all measurements
ErrorHalf of 99.9% confidence interval
StdDevStandard deviation of all measurements
MedianValue separating the higher half of all measurements (50th percentile)
1 μs1 Microsecond (0.000001 sec)
1 ms1,000 Microseconds

November 26, 2025 (Latest)

Performance Improvements

Significant improvements in single message publishing and smaller payload batch operations:

BenchmarkPreviousCurrentImprovement
QoS 1 single message6,094.69 μs551.43 μs~91% faster
QoS 2 single message8,083.58 μs1,004.75 μs~88% faster
100x 256b QoS 0151.09 μs97.12 μs~36% faster
100x 256b QoS 126,178.26 μs19,516.85 μs~25% faster
100x 256b QoS 243,196.69 μs36,133.97 μs~16% faster
100x 256k QoS 0139.16 μs100.22 μs~28% faster
1k QoS 2 messages325,461.87 μs306,406.35 μs~6% faster

The most dramatic improvements were seen in single message QoS 1 and QoS 2 operations, indicating better handling of acknowledgment flows and reduced connection overhead.

Raw Benchmark Data

MethodMeanErrorStdDevMedian
'Publish a QoS 0 message'26.00 μs75.28 μs221.97 μs3.667 μs
'Publish a QoS 1 message'551.43 μs225.28 μs664.23 μs395.938 μs
'Publish a QoS 2 message'1,004.75 μs295.34 μs870.80 μs782.188 μs
'Publish 100 256b length payload QoS 0 messages'97.12 μs66.68 μs196.61 μs73.959 μs
'Publish 100 256b length payload QoS 1 messages'19,516.85 μs811.32 μs2,392.21 μs19,155.875 μs
'Publish 100 256b length payload QoS 2 messages'36,133.97 μs1,572.75 μs4,637.29 μs36,361.791 μs
'Publish 100 256k length payload QoS 0 messages'100.22 μs69.78 μs205.74 μs77.270 μs
'Publish 100 256k length payload QoS 1 messages'206,129.00 μs23,529.04 μs69,375.91 μs194,267.416 μs
'Publish 100 256k length payload QoS 2 messages'222,555.86 μs23,062.91 μs68,001.51 μs211,001.312 μs
'Publish 1k QoS 1 messages'173,926.43 μs3,766.79 μs11,106.45 μs176,484.750 μs
'Publish 1k QoS 2 messages'306,406.35 μs10,326.42 μs30,447.67 μs298,261.895 μs

October 28, 2025 (v0.31.0)

Performance Improvements from v0.30.0

Significant performance improvements across all benchmarks:

BenchmarkPreviousCurrentImprovement
1k QoS 1 messages287,802.82 μs163,134.95 μs~43% faster
1k QoS 2 messages533,574.86 μs325,461.87 μs~39% faster

The most dramatic improvements were seen in bulk message publishing scenarios, particularly for QoS 1 and QoS 2 messages.

Raw Benchmark Data

MethodMeanErrorStdDevMedian
'Publish a QoS 0 message'24.20 μs70.88 μs208.99 μs2.646 μs
'Publish a QoS 1 message'6,094.69 μs16,414.36 μs48,398.12 μs1,026.708 μs
'Publish a QoS 2 message'8,083.58 μs17,437.59 μs51,415.13 μs1,353.751 μs
'Publish 100 256b length payload QoS 0 messages'151.09 μs116.79 μs344.37 μs107.188 μs
'Publish 100 256b length payload QoS 1 messages'26,178.26 μs18,001.87 μs53,078.92 μs20,828.730 μs
'Publish 100 256b length payload QoS 2 messages'43,196.69 μs19,064.73 μs56,212.80 μs36,206.188 μs
'Publish 100 256k length payload QoS 0 messages'139.16 μs94.26 μs277.94 μs101.584 μs
'Publish 100 256k length payload QoS 1 messages'157,189.65 μs41,857.20 μs123,416.91 μs139,608.958 μs
'Publish 100 256k length payload QoS 2 messages'180,717.82 μs49,526.73 μs146,030.67 μs154,019.188 μs
'Publish 1k QoS 1 messages'163,134.95 μs19,365.29 μs57,099.01 μs160,983.167 μs
'Publish 1k QoS 2 messages'325,461.87 μs26,343.40 μs77,674.12 μs314,379.667 μs

October 28, 2025 (v0.30.0)

Performance Improvements from March 2024

Major performance improvements across all benchmarks:

BenchmarkPreviousCurrentImprovement
100x 256b QoS 145,813.98 μs26,283.55 μs~43% faster
100x 256b QoS 288,589.38 μs44,557.05 μs~50% faster
100x 256k QoS 1270,043.05 μs155,177.99 μs~43% faster
100x 256k QoS 2300,923.38 μs172,109.05 μs~43% faster

New benchmarks introduced: Added 1k message bulk publishing tests for QoS 1 and QoS 2.

Raw Benchmark Data

MethodMeanErrorStdDevMedian
'Publish a QoS 0 message'39.67 μs89.35 μs263.45 μs8.521 μs
'Publish a QoS 1 message'5,892.86 μs16,632.25 μs49,040.57 μs911.083 μs
'Publish a QoS 2 message'7,369.47 μs16,676.10 μs49,169.85 μs1,457.687 μs
'Publish 100 256b length payload QoS 0 messages'137.26 μs78.49 μs231.44 μs103.145 μs
'Publish 100 256b length payload QoS 1 messages'26,283.55 μs19,855.80 μs58,545.26 μs19,256.166 μs
'Publish 100 256b length payload QoS 2 messages'44,557.05 μs21,810.68 μs64,309.29 μs36,249.938 μs
'Publish 100 256k length payload QoS 0 messages'141.71 μs96.62 μs284.88 μs102.645 μs
'Publish 100 256k length payload QoS 1 messages'155,177.99 μs39,395.25 μs116,157.79 μs138,491.062 μs
'Publish 100 256k length payload QoS 2 messages'172,109.05 μs44,912.98 μs132,426.93 μs149,029.541 μs
'Publish 1k QoS 1 messages'287,802.82 μs90,041.54 μs265,489.51 μs248,344.521 μs
'Publish 1k QoS 2 messages'533,574.86 μs62,147.67 μs183,243.82 μs475,369.771 μs

Historical Data

March 2024

MethodMeanErrorStdDevMedian
'Publish a QoS 0 message'57.27 μs158.55 μs467.50 μs9.084 μs
'Publish a QoS 1 message'2,291.28 μs903.01 μs2,662.56 μs1,357.063 μs
'Publish a QoS 2 message'2,058.05 μs1,048.91 μs3,092.73 μs1,292.396 μs
'Publish 100 256b length payload QoS 0 messages'138.29 μs183.38 μs540.69 μs79.604 μs
'Publish 100 256b length payload QoS 1 messages'45,813.98 μs4,838.62 μs14,266.78 μs42,482.520 μs
'Publish 100 256b length payload QoS 2 messages'88,589.38 μs3,877.02 μs11,431.48 μs85,640.167 μs
'Publish 100 256k length payload QoS 0 messages'124.92 μs173.22 μs510.74 μs69.709 μs
'Publish 100 256k length payload QoS 1 messages'270,043.05 μs8,850.72 μs26,096.56 μs266,506.583 μs
'Publish 100 256k length payload QoS 2 messages'300,923.38 μs5,704.22 μs16,819.03 μs296,254.688 μs

v0.11.0 Performance Journey (March 2024)

With release v0.11.0 there was a major performance improvement. Publishing a QoS level 2 message went from ~206ms down to ~1.6ms.

MethodOriginalAfter RefactorImprovement
QoS 0 Message5.646 μs4.875 μs14% faster
QoS 1 Message103,536 μs790 μs99% faster
QoS 2 Message206,959 μs1,653 μs99% faster

See Also