title: What are the performance characteristics of sending big messages in Distributed Erlang?
body: <p>Suppose I create new local process in an Erlang application, and i want to send to it a big message.</p>
  
  <pre><code>-module(chain_hello). 
  
  start(N, Some_big_data)-&gt;                                    
     Pid1 = spawn(chain_hello, some_fun, [N]),
     Pid1 ! Some_big_data,
     io:format("done \n").
  </code></pre>
  
  <p>despite <code>Some_big_data</code> is a reference to really big data (eg. content of a file) - is it copied when sending? Are there big penalties for performance?</p>
  
  <p>Normally I would use some thread safe shared object (and/or mutex). Is there any solution in Erlang to avoid copying message content?</p>
  
  <p><strong>ADDED:</strong> <br />
   Interesting case is when Some_big_data is structured content - to be specific: map, on which I can perform some operations.</p>
  
  <p><strong>ADDED2</strong> <br />
   Ok, I see there is no such solution for Erlang (sharing  some structured data like map in worker process) - because of Erlang design. But I think it is justified by solid work, and easily concurrence management.  </p>