You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: Documentation/docs/benchmarks.md
+66-11Lines changed: 66 additions & 11 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,7 +4,9 @@ sidebar_position: 90
4
4
5
5
# Benchmarks
6
6
7
-
The benchmarks provided in the HiveMQtt GitHub repository are built using BenchmarkDotNet, a .NET library for benchmarking. These benchmarks are designed to measure the performance of various messaging operations against any MQTT broker.
7
+
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.
8
+
9
+
8
10
9
11
## Running Benchmarks
10
12
@@ -17,18 +19,61 @@ dotnet run ClientBenchmarkApp.csproj -c Release
17
19
18
20
## Results
19
21
20
-
The benchmarks provide insights into the performance of different messaging methods under various scenarios. Below are the results obtained from running the benchmarks on a local MBP (MacBook Pro) against a HiveMQ v4 broker running in a Docker container over localhost.
22
+
The benchmarks provide insights into the performance of different messaging methods under various scenarios. Below are the results obtained from running the benchmarks on a local MacBook Pro against a HiveMQ v4 broker running in a Docker container over localhost.
21
23
22
24
## Legend
23
25
24
-
```
25
-
Mean : Arithmetic mean of all measurements
26
-
Error : Half of 99.9% confidence interval
27
-
StdDev : Standard deviation of all measurements
28
-
Median : Value separating the higher half of all measurements (50th percentile)
29
-
1 us : 1 Microsecond (0.000001 sec)
30
-
1 ms : 1,000 Microseconds
31
-
```
26
+
***Mean**: Arithmetic mean of all measurements
27
+
***Error**: Half of 99.9% confidence interval
28
+
***StdDev**: Standard deviation of all measurements
29
+
***Median**: Value separating the higher half of all measurements (50th percentile)
30
+
***1 us**: 1 Microsecond (0.000001 sec)
31
+
***1 ms**: 1,000 Microseconds
32
+
* <fontcolor="green">Green</font>: Improvement
33
+
* <fontcolor="red">Red</font>: Regression
34
+
35
+
## July 25, 2024
36
+
37
+
### Summary
38
+
39
+
The client has had many feature additions and improvements from March 2024 including:
40
+
41
+
* New Back-pressure support
42
+
* Improved QoS reliability
43
+
* Improved Async await strategies
44
+
* Re-architected internal queues
45
+
* Improved event & trigger handling
46
+
* All around better error handling
47
+
48
+
The following table shows the benchmark results compared against previous benchmark runs.
| 'Publish a QoS 0 message' | 32.59 us | 85.64 us | 252.53 us | 5.500 us |
69
+
| 'Publish a QoS 1 message' | 6,323.30 us | 16,671.57 us | 49,156.51 us | 982.208 us |
70
+
| 'Publish a QoS 2 message' | 6,554.90 us | 16,998.38 us | 50,120.10 us | 1,004.854 us |
71
+
| 'Publish 100 256b length payload QoS 0 messages' | 131.73 us | 92.15 us | 271.71 us | 100.375 us |
72
+
| 'Publish 100 256b length payload QoS 1 messages' | 35,405.71 us | 17,183.26 us | 50,665.23 us | 29,661.605 us |
73
+
| 'Publish 100 256b length payload QoS 2 messages' | 61,955.04 us | 17,559.19 us | 51,773.66 us | 55,474.250 us |
74
+
| 'Publish 100 256k length payload QoS 0 messages' | 129.00 us | 83.24 us | 245.42 us | 99.354 us |
75
+
| 'Publish 100 256k length payload QoS 1 messages' | 226,498.28 us | 42,050.59 us | 123,987.13 us | 215,158.104 us |
76
+
| 'Publish 100 256k length payload QoS 2 messages' | 244,227.03 us | 47,932.40 us | 141,329.77 us | 227,255.729 us |
32
77
33
78
## Mar 22, 2024
34
79
@@ -50,7 +95,17 @@ See also: [What is MQTT Quality of Service (QoS) 0,1, & 2? – MQTT Essentials:
50
95
51
96
## Mar 21, 2024
52
97
53
-
With release [v0.11.0](https://github.com/hivemq/hivemq-mqtt-client-dotnet/releases/tag/v0.11.0) there was a big performance improvement. All messaging performance was improved but particularly publishing a QoS level 2 message went from ~206ms down to ~1.6ms.
98
+
With release [v0.11.0](https://github.com/hivemq/hivemq-mqtt-client-dotnet/releases/tag/v0.11.0) there was a big performance improvement. All messaging performance was improved but particularly publishing a **QoS level 2 message went from ~206ms down to ~1.6ms**.
99
+
100
+
### Summary
101
+
102
+
From the early version through two refactors, this table summarizes the performance improvements.
103
+
104
+
| Method | Original | First Pass Refactor | Final Refactor |
0 commit comments