<div>Awesome, thanks!</div><div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Le ven. 25 oct. 2019 à 12:39, Micael Karlberg <<a href="mailto:micael.karlberg@ericsson.com">micael.karlberg@ericsson.com</a>> a écrit :<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi,<br>
<br>
Its early days still, but the goal is definitely that it should<br>
be faster.<br>
<br>
Here is some figures from a (time) test tool which is part of the<br>
test suite (its basically a ping-pong case), both server and client<br>
running on the same host (but in different VMs):<br>
<br>
Two transports:<br>
         gen:  gen_tcp<br>
         sock: socket (tcp)<br>
<br>
The socket active mode is a simulation of gen_tcp active mode<br>
(no active = N).<br>
<br>
The tables are the exchange from the client side.<br>
<br>
With server side using gen (active = false):<br>
<br>
         Transport       Active          Data<br>
         gen             false           10192 byte/ms, 154 msgs/ms<br>
         gen             true            10383 byte/ms, 157 msgs/ms<br>
         gen             once            6003 byte/ms,  90  msgs/ms<br>
         sock            false           14050 byte/ms, 212 msgs/ms<br>
         sock            true            14772 byte/ms, 223 msgs/ms<br>
         sock            once            14050 byte/ms, 210 msgs/ms<br>
<br>
<br>
With server side using gen (active = true):<br>
<br>
         Transport       Active          Data<br>
         gen             false           9447 byte/ms,  143 msgs/ms<br>
         gen             true            22345 byte/ms, 338 msgs/ms<br>
         gen             once            5532 byte/ms,  83  msgs/ms<br>
         sock            false           15316 byte/ms, 232 msgs/ms<br>
         sock            true            23693 byte/ms, 358 msgs/ms<br>
         sock            once            22068 byte/ms, 334 msgs/ms<br>
<br>
<br>
With server side using sock (active = false, async = true):<br>
<br>
         Transport       Active          Data<br>
         gen             false           11260 byte/ms, 170 msgs/ms<br>
         gen             true            22273 byte/ms, 337 msgs/ms<br>
         gen             once            7703 byte/ms,  116 msgs/ms<br>
         sock            false           15211 byte/ms, 230 msgs/ms<br>
         sock            true            24778 byte/ms, 375 msgs/ms<br>
         sock            once            23086 byte/ms, 349 msgs/ms<br>
<br>
<br>
With server side using sock (active = true, async = true):<br>
<br>
         Transport       Active          Data<br>
         gen             false           11351 byte/ms, 171 msgs/ms<br>
         gen             true            22469 byte/ms, 340 msgs/ms<br>
         gen             once            7407 byte/ms,  112 msgs/ms<br>
         sock            false           15484 byte/ms, 234 msgs/ms<br>
         sock            true            24885 byte/ms, 377 msgs/ms<br>
         sock            once            23570 byte/ms, 357 msgs/ms<br>
<br>
<br>
There is of course a bit of overhead since the socket transport<br>
is trying to emulate (part of) gen_tcp.<br>
<br>
This is run on a Dell Precision T1700 running SLES 12 SP2 (not that<br>
that effects the relative performance).<br>
Run with a snapshot from the maint branch.<br>
<br>
This is obviously not a real use case, but it can be a guideline.<br>
Also no UDP test (at the moment).<br>
<br>
/BMK<br>
<br>
On 2019-10-24 18:48, Frank Muller wrote:<br>
> Hi Thomas<br>
> <br>
> Is the socket module faster than gen_tcp/gen_udp in your case? If yes, can you please share some <br>
> numbers.<br>
> <br>
> /Frank<br>
> <br>
>      > case socket:recvfrom(Sock, 0, nowait) of<br>
>      >       {ok, {#{family := Domain,<br>
>      >               port   := Port,<br>
>      >               addr   := Addr}, Data}} -><br>
>      >       .<br>
> <br>
>     Hi Micael, Mark,<br>
> <br>
>     thanks for your replies. The snippet above helped me getting the record<br>
>     matched.<br>
> <br>
>     I'm quite impressed with the socket module, it seems to be pretty<br>
>     complete, at least for my application.<br>
> <br>
>     Thanks,<br>
>     Thomas<br>
> <br>
</blockquote></div></div>