<div dir="ltr">What Joe writes is of course true, but Python programs are generally run on general purpose multitasking operating systems too, so they too have the problem of concurrency, getting their cache forcibly invalidated, etc., etc., it's just that they generally can't do it to themselves.<div><br></div><div>I think it would be awesome for someone to build a site/document that helped (semi-)formally solidify intuitions for people coming to Erlang, because most of the intuitions earned in other languages are not applicable either due to immutability (e.g. "changing" element N of a list), language design (e.g. math on arbitrarilybignums), or semi-opaque foreignness (e.g. ets bag perf characteristics vs. set vs. OTP state vs. process dictionary).</div><div><br></div><div>Not it!</div><div><br></div><div>F.</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Sep 16, 2015 at 9:56 AM, Joe Armstrong <span dir="ltr"><<a href="mailto:erlang@gmail.com" target="_blank">erlang@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On Wed, Sep 16, 2015 at 5:03 PM, Eric des Courtis<br>
<<a href="mailto:eric.des.courtis@benbria.ca">eric.des.courtis@benbria.ca</a>> wrote:<br>
> What is the cost model of all operations in Erlang 18?<br>
><br>
> For example Python has this cost model<br>
> <a href="http://scripts.mit.edu/~6.006/fall07/wiki/index.php?title=Python_Cost_Model" rel="noreferrer" target="_blank">http://scripts.mit.edu/~6.006/fall07/wiki/index.php?title=Python_Cost_Model</a><br>
> .<br>
><br>
> I either want a link to a single source for this information or I would like<br>
> to crowd source the information here now.<br>
<br>
</span>Interesting question - the problem with Erlang is that you cannot<br>
ignore concurrency - so even if you know the costs of an atomic<br>
operation in an isolated process I suspect this is not going to tell you<br>
the cost when a few tens of thousands of processes perform that<br>
operation.<br>
<br>
 In a singly threaded language (like Python) I guess you could add costs<br>
of atomic things together - but in Erlang it's more tricky.<br>
<br>
I'd love to be able to reason like this:<br>
<br>
     If process P1 takes time T1 and process P2 takes time T2<br>
<br>
     then it might take time max(T1, T2) on a dual core and about<br>
T1+T2 on a single core.<br>
<br>
    But as soon as you start measuring these kind of things the interpretation<br>
of the data becomes very difficult.<br>
<br>
Not much help I'm afraid<br>
<br>
/Joe<br>
<span class=""><br>
><br>
> Thanks for your cooperation.<br>
><br>
> Eric des Courtis<br>
><br>
</span>> _______________________________________________<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" rel="noreferrer" target="_blank">http://erlang.org/mailman/listinfo/erlang-questions</a><br>
><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" rel="noreferrer" target="_blank">http://erlang.org/mailman/listinfo/erlang-questions</a><br>
</blockquote></div><br></div>