Crates.io | tokio-stream-multiplexor |
lib.rs | tokio-stream-multiplexor |
version | 0.5.6 |
source | src |
created_at | 2021-11-21 15:31:07.768787 |
updated_at | 2021-11-26 14:58:01.750734 |
description | Stream Multiplexor for tokio with a tcp like interface |
homepage | |
repository | https://github.com/GothAck/tokio-stream-multiplexor |
max_upload_size | |
id | 485337 |
size | 89,176 |
TL;DR: Multiplex multiple streams over a single stream. Has a TcpListener / TcpSocket style interface, and uses u16 ports similar to TCP itself.
[dependencies]
foo = "1.2.3"
Because sometimes you wanna cram as much shite down one TCP stream as you possibly can, rather than have your application connect with multiple ports.
Because I needed it. Inspired by async-smux, written for Tokio.
Doesn't this whole protocol in a protocol thing hurt perf?
Sure, but take a look at the benches:
throughput/tcp time: [28.968 ms 30.460 ms 31.744 ms]
thrpt: [7.8755 GiB/s 8.2076 GiB/s 8.6303 GiB/s]
throughput/mux time: [122.24 ms 135.96 ms 158.80 ms]
thrpt: [1.5743 GiB/s 1.8388 GiB/s 2.0451 GiB/s]
Approximately 4.5 times slower than TCP, but still able to shovel 1.8 GiB/s of shite... Seems alright to me. (Numbers could possibly be improved with some tuning of the config params too.)