[erlang-questions] At what point am I "playing compiler"

Dennis Byrne <>
Mon May 18 16:46:08 CEST 2009


> How about:
>
> expressive_and_efficient() ->
>    List = [1,2,3],
>    {lists:min(List), lists:max(List), lists:sum(List)}.
>
> :-)
>

My understanding is that lists:min, lists:max, and lists:sum are all
O(N).  If this is the case, won't this function will run 3x times my
efficient function (after I replace 'Last = lists:last' with
'AnyElement = lists:nth'.

> I run micro-benchmarks obsessively. On my machine expressive() is 70%
> slower than efficient() without HIPE and 150% slower with HIPE. But
> we're talking fractions of a microsecond per execution. Should you
> bother?
>
> If you're concerned with efficiency, timer:tc/3 is your friend. Stuff
> like this you should obviously loop at least a few million times to
> get reliable times.
>
-- 
Dennis Byrne



More information about the erlang-questions mailing list