<html><body>
<p><font size="2" face="sans-serif">I would presume it does it so it can avoid allocating on the heap for small messages.</font><br>
<br>
<font size="2" face="sans-serif">If your message is < 30 bytes then it is stored within message_t, i.e. on the stack if message_t is on the stack, >= 30 bytes it mallocs some memory (buffer size + sizeof(content_t) for some reference counting housekeeping).</font><br>
<br>
<font size="2" face="sans-serif">Richard.</font><br>
<br>
<br>
<img width="16" height="16" src="cid:1__=0FBBF181DFA5A5F88f9e8a93df938@waters.com" border="0" alt="Inactive hide details for "Christoph Heindl" ---14/02/2013 09:43:26 AM---Hi Richard, On Thu, Feb 14, 2013 at 10:14 AM, <Richard"><font size="2" color="#424282" face="sans-serif">"Christoph Heindl" ---14/02/2013 09:43:26 AM---Hi Richard, On Thu, Feb 14, 2013 at 10:14 AM, <Richard_Newton@waters.com> wrote:</font><br>
<br>
<font size="1" color="#5F5F5F" face="sans-serif">From:      </font><font size="1" face="sans-serif">"Christoph Heindl" <christoph.heindl@gmail.com></font><br>
<font size="1" color="#5F5F5F" face="sans-serif">To:        </font><font size="1" face="sans-serif">"ZeroMQ development list" <zeromq-dev@lists.zeromq.org></font><br>
<font size="1" color="#5F5F5F" face="sans-serif">Date:      </font><font size="1" face="sans-serif">14/02/2013 09:43 AM</font><br>
<font size="1" color="#5F5F5F" face="sans-serif">Subject:   </font><font size="1" face="sans-serif">Re: [zeromq-dev] C++ Move Constructor and Assignment Operator</font><br>
<font size="1" color="#5F5F5F" face="sans-serif">Sent by:   </font><font size="1" face="sans-serif">zeromq-dev-bounces@lists.zeromq.org</font><br>
<hr width="100%" size="2" align="left" noshade style="color:#8091A5; "><br>
<br>
<br>
<font size="3" face="serif">Hi Richard,<br>
</font><br>
<font size="3" face="serif">On Thu, Feb 14, 2013 at 10:14 AM, <</font><a href="mailto:Richard_Newton@waters.com" target="_blank"><font size="3" color="#0000FF" face="serif"><u>Richard_Newton@waters.com</u></font></a><font size="3" face="serif">> wrote:</font>
<ul style="padding-left: 9pt"><font size="3" face="sans-serif"><br>
I believe zeromq does this is by design. It copies the data if the message size is small and reference counts it if its above a certain size.</font></ul>
<br>
<font size="3" face="serif">Ok, I did not know that. Would by interesting to know why. Is ZMQ using some kind of small buffer optimization, where it uses the first few bytes of the buffer for reference counter or storing the values if small enough?</font>
<ul style="padding-left: 9pt"><font size="3" face="serif"><br>
</font><font size="3" face="sans-serif"><br>
It looks like the size threshold is specified by the max_vsm_size enum in msg.hpp, currently set to 29, so if you make your message size 30 it should switch to reference counting.</font></ul>
<br>
<font size="3" face="serif">I did and it works. Added both, positive and negative tests.</font><br>
<br>
<font size="3" face="serif">Thanks for the hint.</font><br>
<br>
<font size="3" face="serif">Best,</font><br>
<font size="3" face="serif">Christoph</font><tt><font size="2">_______________________________________________<br>
zeromq-dev mailing list<br>
zeromq-dev@lists.zeromq.org<br>
</font></tt><tt><font size="2"><a href="http://lists.zeromq.org/mailman/listinfo/zeromq-dev">http://lists.zeromq.org/mailman/listinfo/zeromq-dev</a></font></tt><tt><font size="2"><br>
</font></tt><br>

<P><pre wrap>===========================================================
The information in this email is confidential, and is intended solely for the addressee(s). 
Access to this email by anyone else is unauthorized and therefore prohibited.  If you are 
not the intended recipient you are notified that disclosing, copying, distributing or taking 
any action in reliance on the contents of this information is strictly prohibited and may be unlawful.
===========================================================</pre></P></body></html>