MQTT Python client bench

Results / awscrt

awscrt 0.37.0 crt_event_loop native

version0.37.0
I/O modelcrt_event_loop
implementationnative
stabilitystable
completioncallback
drive shapesync
Python3.12.13

Refused

Declared unsupported by the adapter, never approximated.

Known limitations

aws-c-io does not expose TCP_NODELAY, and a trace of the library's connect shows it never sets it, so Nagle's algorithm stays on. A QoS 1 round trip then waits tens of milliseconds, against hundreds of microseconds at QoS 0, where no acknowledgement is pending: the pattern of Nagle's algorithm waiting for a delayed ACK. This is the library as shipped, reported as measured. It says nothing about the library's publish or receive cost, which the other points show.

Affects: rtt_qos1_fixed, rtt_qos1_fixed_v5.

Every point

pointheadlinevalueCPU / msgpeak RSSflags
pub_qos0_maxmsgs/s16,45677.2 µs27.2 MiB
pub_qos1_maxmsgs/s24,42053.2 µs27.0 MiB
pub_qos1_fixedp50135 µs104 µs26.7 MiB
sub_qos0_maxmsgs/s58,13717.2 µs26.5 MiB
sub_qos1_fixedp50125 µs44.4 µs26.8 MiB
rtt_qos1_fixedp5023.6 ms148 µs26.8 MiB
pub_16k_fixedp502,294 µs141 µs26.7 MiB
idle_connectconnect62.3 ms26.5 MiB
pub_qos1_fixed_v5p50135 µs110 µs26.6 MiB
sub_qos1_fixed_v5p50109 µs65.0 µs26.8 MiB
rtt_qos1_fixed_v5p5020.4 ms170 µs26.8 MiB
sub_qos1_maxmsgs/s47,14121.2 µs26.5 MiBbroker boundbroker queue overflow
pub_qos1_max_v5msgs/s15,31479.9 µs26.6 MiB
sub_qos1_max_v5msgs/s37,07026.7 µs26.7 MiBbroker boundbroker queue overflow
pub_qos1_max_16kmsgs/s19,87262.7 µs29.7 MiB
pub_qos1_fixed_500p50193 µs182 µs26.5 MiB
pub_qos1_fixed_5kp50129 µs78.0 µs27.0 MiB
sub_qos1_fixed_500p50176 µs79.8 µs26.6 MiB
sub_qos1_fixed_5kp50104 µs40.0 µs27.1 MiB
rtt_qos0_fixedp50225 µs165 µs26.7 MiB
pub_qos2_maxmsgs/sunsupported
pub_qos2_fixedp50unsupported
sub_qos2_fixedp50unsupported
pub_fanout_fixedp50129 µs103 µs26.8 MiB
sub_fanin_fixedp50125 µs45.6 µs26.9 MiB
sub_filters_fixedp50unsupported
duplex_qos1_fixedp50287 µs87.5 µs26.8 MiB
pub_qos1_fixed_tlsp50143 µs108 µs27.4 MiB
sub_qos1_fixed_tlsp50135 µs52.5 µs27.5 MiB
idle_connect_tlsconnect105.4 ms27.2 MiB
pub_qos1_fixed_v5_propsp50143 µs118 µs26.7 MiB
sub_qos1_fixed_v5_propsp50113 µs68.8 µs26.8 MiB
pub_qos1_fixed_v5_aliasp50unsupported
sub_qos1_max_v5_rm16msgs/sunsupported
pub_64k_fixedp501,737 µs192 µs26.9 MiB
pub_1m_fixedp503,080 µs2,481 µs31.4 MiB
pub_rl_boundariesp506,423 µs1,833 µs38.4 MiB