[zeromq-dev] P/Invoke-based CLR access to zeroMQ
sustrik at fastmq.com
Mon Feb 23 11:03:41 CET 2009
> Well, the CLR is an amazing piece of technology. Please check the
> attached dnzmq.cs, I think I made the Send function work without
> modifications to the C-API. So all that's needed now would be a receive
> with a allocator callback.
It looks pretty elegant.
> There is just one minor problem: with messages of 512 bytes size, the
> original copy-based implementation is twice as fast as the new one...
This is why I've proposed to use zero-copy only for large messages. On
low layers (like OS kernel) the low limit for messages to be more
effective with zero-copy is somewhere at several kilobytes of size. With
the functionality on higher level of stack, this limit may be even higher.
Once we have a little time we'll give your implementation a try testing
it for different message sizes. Testing it for both zero-copy and copy
algorithms should yield 2 linear graphs. The intersection of the two
lines should be a located at the message size where zero-copy starts to
be more efficient than copy algorithm.
Btw, we've fixed the bugs you've reported and merged the fixes into the
trunk. The only exception is the SCTP-related problem which will take a
some time to fix as we are having problems with SCTP API not being fully
standardised at the moment.
More information about the zeromq-dev