<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">On Mon, Jun 23, 2014 at 6:09 PM, Robert Raschke <span dir="ltr"><<a href="mailto:rtrlists@googlemail.com" target="_blank">rtrlists@googlemail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><p>Hi Max,</p>
<p>since you are already using separate nodes running NIFs, there's probably not much worth in converting to a C node or port. So this is just for posterity.</p></blockquote><div><br></div><div>Wrong. It will be a very big work to convert to C node.</div>
<div><br></div><div>Right now my data flow is following:  </div><div><br></div><div>1) 5-8 mbit of data are transferred to separate node</div><div>2) they pass through complicated code on erlang that prepares them for decoding</div>
<div>3) then original frame goes to decoder</div><div>4) decoder outputs from 100 to 1000 megabits of data</div><div>5) then they again go to tricky logic</div><div>6) after this huge amount of raw data gets into encoders</div>
<div>7) and again through erlang it gets back, being around 2-4 mbit/s</div><div><br></div><div><br></div><div>So erlang has to copy less than 10 mbit here and there. All serious payload is zerocopies inside one node.</div>
<div><br></div><div>If I change to driver, then I will have to write much more boilerplate demarshalling code.</div><div><br></div><div>If I change to C node or port then I will have to rewrite big amount of working erlang code in C.</div>
<div><br></div></div></div></div>