lemunozm / message-io

Fast and easy-to-use event-driven network library.
Apache License 2.0
1.12k stars 75 forks source link

WIP: Add unix socket support? #172

Open javaarchive opened 5 months ago

javaarchive commented 5 months ago

image Works on my machine borrowing most of the code from the tcp adapter. Has some implementation issues that I'll be putting as a list here:

javaarchive commented 5 months ago

Tested in release, websocket is only slow in debug for some reason, here is an output from the same computer for reference:

Sending 1GB in chunks of 65507 bytes:

message-io Udp:     Throughput: 9.24 GB/s
message-io Tcp:     Throughput: 5.68 GB/s
message-io FramedTcp:   Throughput: 4.49 GB/s
message-io Ws:      Throughput: 1.85 GB/s
message-io UnixSocket:      Throughput: 9.61 GB/s

native Udp:         Throughput: 10.24 GB/s
native Tcp:         Throughput: 6.08 GB/s
native FramedTcp:   Throughput: 4.78 GB/s
native Ws:      Throughput: 1.94 GB/s
javaarchive commented 5 months ago

Discovered implementation issue where messages sent after each other without a sleep are dropped.

Edit: this is fine for the stream based protocol

javaarchive commented 5 months ago

image Datagram support throughput (in debug). For release: image I'm still finding it odd that the stream based transport slows down in release but that might just be variation while I'm testing this.

javaarchive commented 5 months ago

Due to unix datagram sockets not really having an IPv4 or IPv6 that fits in the SocketAddr struct, the implementation is partially broken for now. I may see if I can change the types on a separate branch as an experiment.

lemunozm commented 5 months ago

Hi @javaarchive, Mmmm... interesting the throughput issue. At such speeds could be noise in the runs. Is it always faster in debug or sometimes?