[erlang-questions] Re: Shared/Hybrid Heap

Ryan Zezeski <>
Thu Nov 4 00:35:08 CET 2010


On Mon, Oct 18, 2010 at 7:28 AM, Morten Krogh <> wrote:
>
>
> On practical terms, I feel that Erlang some times gives up performance for
> unnecessary reasons. I am especially thinking about mutability.
> There is no reason to give up mutation within a process which is already a
> serializer.
>
> code like this
>
> loop(Dict)
>    receive
>    {put, K, V} ->
>        Dict2 = dict:store(K, V, Dict),
>        loop(Dict2)
>    end.
>
>
> is just a performance wise inefficient way of doing
>
> loop(Mut) ->
>    receive
>    {put, K, V} ->
>        put(K,V, Mut),
>        loop(Mut)
>    end.
>
> where Mut is a mutable data structure.
> In the dict exampe, there is a unncecessary work and garbage collection for
> the functional data structure Dict.
> And you gain nothing, since it is sequential code.
>
>
I think this is a good point.  If you are simply creating a data structure
in _one_ process it should be mutable.  Then when you publish it it becomes
immutable.  I have Clojure's transients in mind.

http://clojure.org/transients

*If a tree falls in the woods, does it make a sound?**If a pure function
mutates some local data in order to produce an immutable return value, is
that ok?*
*
*
*
*


More information about the erlang-questions mailing list