[erlang-questions] Indexed element access: array vs. erlang:element

Dimitry Golubovsky <>
Mon Aug 25 18:49:07 CEST 2008


Joel,

Just wondering why set operations are so much faster (except for fixed
size arrays)?

The result of applying *set operations is not consumed, is it? What if
you try to do anything with it (after it is returned from timer:tc)?

Could this be some internal laziness, so only function application
thunks are indeed formed, but since results are never consumed, it
does not expand any further? Or is it some optimization of the same
kind, that the compiler sees unconsumed result, and does not really
compile anything? Or even something at JIT level?

Or am I missing anything ? ;)

Thanks.

On  8/25/08, Joel Reymont <> wrote:
>
> 14> arr:test().
> Fixed-size array: get:     1256ns, set:     6667ns
> Extensible array: get:     1255ns, set:       22ns
> Tuple:            get:      659ns, set:        6ns
> ok
>
> %% 1 million
>
> 15> arr:test(1000000).
> Fixed-size array: get:   121881ns, set:   777067ns
> Extensible array: get:   120026ns, set:       35ns
> Tuple:            get:    66288ns, set:       40ns
> ok


-- 
Dimitry Golubovsky

Anywhere on the Web



More information about the erlang-questions mailing list