[erlang-questions] performance vs msg queue length

John Erickson <>
Wed Apr 21 00:25:44 CEST 2010


These results are clearly better, but still I'm a bit surprised there is a
noticable slowdown, especially from 100-10k.  Does anyone know the reason
for this?  It seems to imply we should try to keep message queues under 100
messages.  I also wonder how message size plays into this.


On Tue, Apr 20, 2010 at 12:15 PM, Per Melin <> wrote:

> On Tue, Apr 20, 2010 at 8:41 PM, John Erickson <> wrote:
> > [begin [ self() ! a || _ <- lists:seq(1,N) ],
> >>        S = now(),
> >>        [ receive _ -> ok end || _ <- lists:seq(1,N) ],
> >>        io:format("~w~n", [timer:now_diff(now(), S) / N])
> >>  end || N <- [1,10,100,1000,10000]].
> >>
> >> ...
> >>
> >> If I put it into a module, add 1e5 and 1e6 then I get:
> >>
> >> 1> test:test().
> >> 1.0
> >> 0.1
> >> 0.06
> >> 0.114
> >> 0.1554
> >> 0.36398
> >> 0.358997
>
> One little change:
>
> [begin L = lists:seq(1,N),
>      [ self() ! a || _ <- L ],
>      S = now(),
>      [ receive _ -> ok end || _ <- L ],
>       io:format("~w~n", [timer:now_diff(now(), S) / N])
> end || N <- [1,10,100,1000,10000,100000,1000000]].
>
> 1.0
> 0.1
> 0.06
> 0.091
> 0.1144
> 0.11898
> 0.120905
>


More information about the erlang-questions mailing list