Michael Truog (okeuday) wrote,
Michael Truog

Erlang Benchmark

I now have a more thorough Erlang data structure benchmark for storing data with either integer keys or string (list of integers) keys. The results show that the new trie data structure is a good choice for the storage of data with string keys (i.e., obvious typical usage). The performance of ets can change with the amount of concurrent accesses, since ets uses global state (as shown below with the 10 concurrent ets reads). Example (non-HiPE) results are below:

Integer Key:
N ==    10000
array (fixed):    get:     5065 µs, set:     9076 µs
array (dynamic):  get:     5040 µs, set:     9209 µs
tuple:            get:      820 µs, set:   249976 µs
gb_trees:         get:     6825 µs, set:    68632 µs
rbdict:           get:     6251 µs, set:    20912 µs
aadict:           get:     6397 µs, set:    24892 µs
orddict:          get:  1646868 µs, set:     2261 µs
dict:             get:     4541 µs, set:    26161 µs
ets (set):        get:     3972 µs, set:     7718 µs
process dict:     get:     1092 µs, set:     2904 µs
ets x10 (set):    get:     1943 µs

String Key:
N ==    10000
gb_trees:         get:    24420 µs, set:    47523 µs
rbdict:           get:    22337 µs, set:    39466 µs
aadict:           get:    22217 µs, set:    46358 µs
orddict:          get:  2694740 µs, set:  2470911 µs
dict:             get:    18034 µs, set:    63578 µs
trie:             get:    14826 µs, set:    47240 µs
ets (set):        get:    17645 µs, set:    23810 µs
process dict:     get:    13390 µs, set:    26796 µs
ets x10 (set):    get:    21102 µs

The benchmark results are from Linux version 2.6.32-21, Ubuntu 10.04 with an Intel(R) Core(TM)2 CPU T5600 @ 1.83GHz.

  • trie retest

    The older trie (speed) testing didn't experiment with Erlang compilation options and used Erlang R14B01 (newest, at the time). To examine how…

  • v4 UUIDs

    After updating the Erlang uuid implementation to fix various bugs, I added uuid:get_v4_urandom/0 function to utilize the 2006 Wichmann-Hill…

  • A Better Erlang Priority Queue

    The other priority queue implementations were meant to avoid the O(N) task of finding a priority within the implementation used by both Riak and…

  • Post a new comment


    default userpic

    Your reply will be screened

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.