<div dir="ltr">HTTP client over external port is the most expensive way in all terms:<div><br></div><div>1) programming. It is REALLY hard to debug it.  Was it launched under valgrind? If no, then there are at least 5 horrible memory leaks and memory corruptions per each screen of code that haven't been discovered yet</div><div><br></div><div>2) deploying. Deploying NIF is a pain because you need to have build farm for each architecture that you target to.  For example, we deploy flussonic under suse 10, debian 7, debian8/ubuntu16, arm7, arm8, windows, elbrus 2k.   All these platforms are different and you cannot rely on cross compiler. Good luck with building repeatable infrastructure for compiling under windows.</div><div><br></div><div>If you have erlang code, you can compile under mac and launch under windows because guys from OTP team have already done all dirty job. Just read their manual and follow it.</div><div><br></div><div>3) speed. It will be slow in all terms. High latency due to multiple OS process scheduling: read in one process, then write to pipe and send further.  Do you think that linux pipe is a "good and optimized" thing? It is not.</div><div>What if we speak about high traffic?  1 gigabit of input will become several gigabits of _useless_ copying data.</div><div><br></div><div><br></div><div><br></div><div><br></div><div>So I do not understand what can give libcurl that cannot be achieved in plain erlang.  It is definitely not about high traffic speed because plain vanilla lhttpc can download 10 Gbit/s over fiber without any extra modifications.</div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Aug 31, 2017 at 10:22 AM, Paul Oliver <span dir="ltr"><<a href="mailto:puzza007@gmail.com" target="_blank">puzza007@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><span class=""><div class="gmail_quote"><div dir="ltr">On Thu, Aug 31, 2017 at 6:20 PM Taras Halturin <<a href="mailto:halturin@gmail.com" target="_blank">halturin@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">I think, Max means that you choose most expensive way to deal with it and it's not about efficiency of http handling but about efficiency of aim achieving :)</div><div class="gmail_extra"><br></div></blockquote><div><br></div></div></span><div dir="ltr"><div dir="ltr"><div class="gmail_quote">The most expensive way in terms of what? If not speed do you mean development effort? Given that the aim is to use libcurl then the choice is a port executable or some sort of NIF. When using a port executable I don't have to worry about it crashing my VM and all I pay is the price of port communications. If I use a NIF I have to concern myself with making sure my NIF code and the code in libcurl doesn't crash my VM. That's a lot more development time and risk.</div><div class="gmail_quote"><br></div><div class="gmail_quote">Cheers,</div><div class="gmail_quote">Paul.</div></div></div></div>
</blockquote></div><br></div>