<div dir="ltr">Thanks for the fantastic reply Jay, I will look into this stuff carefully.</div><div class="gmail_extra"><br clear="all"><div><div class="gmail_signature"><div><br></div><div><br></div><div><span style="font-size:13px"><div><span style="font-family:arial,sans-serif;font-size:13px;border-collapse:collapse"><b>José Valim</b></span></div><div><span style="font-family:arial,sans-serif;font-size:13px;border-collapse:collapse"><div><span style="font-family:verdana,sans-serif;font-size:x-small"><a href="http://www.plataformatec.com.br/" style="color:rgb(42,93,176)" target="_blank">www.plataformatec.com.br</a></span></div><div><span style="font-family:verdana,sans-serif;font-size:x-small">Skype: jv.ptec</span></div><div><span style="font-family:verdana,sans-serif;font-size:x-small">Founder and Lead Developer</span></div></span></div></span></div></div></div>
<br><div class="gmail_quote">On Thu, May 21, 2015 at 9:56 PM, Jay Nelson <span dir="ltr"><<a href="mailto:jay@duomark.com" target="_blank">jay@duomark.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word">Jose wrote:<div><br></div><div>> <span style="white-space:pre-wrap">I wonder how fast it would be if binary:split/3 was written as a BIF.</span></div><div><br></div><div>I wrote a BIF in 2005 for manipulating binaries. It was documented in</div><div>an ICFP presentation and ACM paper. You can read about it, the</div><div>erlang code, and more importantly the actual BIF code at my website</div><div><a href="http://duomark.com/erlang/index.html" target="_blank">http://duomark.com/erlang/index.html</a> listed under the title</div><div>“A Stream Library Using Erlang Binaries”. There are separate links</div><div>for the HTML Briefing and Code.</div><div><br></div><div><a href="http://duomark.com/erlang/publications/acm2005.pdf" target="_blank">http://duomark.com/erlang/publications/acm2005.pdf</a></div><div><br></div><div>From the abstract:</div><div><br></div><div>"The new BIFs are shown to improve performance as much
as 250</div><div>times over native erlang functions. The reduction in memory
usage</div><div>caused by the BIFs also allows successful processing in
situations</div><div>that crashed the runtime as application functions."</div><div><br></div><div>There is a gzip tar file that you used to be able to overlay on R10B(!!)</div><div>to build the BIFs. But it is all contained in a single stream.c file and the</div><div>corresponding BIF table entries are in the other parts of the erts and</div><div>beam directories there, so it should be easy to adapt to the current</div><div>release you are working with. You should be able</div><div>to quickly get into the source and see if it meets any of your needs.</div><div>It will require some modification, and there are manual loop unrolling</div><div>and so forth that I did for performance, but as a rough quick test of</div><div>whether a BIF would be helpful this might be the quickest way to get</div><div>started.</div><div><br></div><div>If you do achieve interesting results, be sure to add reduction count</div><div>bumping in the BIF. This code predates the option of doing that.</div><span class="HOEnZb"><font color="#888888"><div><br></div><div>jay</div><div><br></div></font></span></div><br>_______________________________________________<br>
erlang-questions mailing list<br>
<a href="mailto:erlang-questions@erlang.org">erlang-questions@erlang.org</a><br>
<a href="http://erlang.org/mailman/listinfo/erlang-questions" target="_blank">http://erlang.org/mailman/listinfo/erlang-questions</a><br>
<br></blockquote></div><br></div>