[erlang-questions] efficient way to make some resources available as precompiled beams

Benoit Chesneau bchesneau@REDACTED
Mon Aug 20 11:30:43 CEST 2018


Hi all,

I'm wondering what Is most efficient when you want to make some resource
available as precompiled beams.

Say for example, you have a a resource available as CSV and there is a need
for a lookup on this list based on one of column.

I am for now transforming this list in a list of matching functions
(lookup(X1) ->. V1; ... lookup(XN) -> VN.). Ie you have a CSV (simplified
version):

    Key1; V1
    Key2; V2
    ...
    KeyN; VN

which is transformed in the following erlang file, later compiled:

    lookup(Key1) -> V1;
    lookup(Key2) -> V2;
    ...
    lookup(KeyN) -> VN.


But with the new optimisations in Erlang 20/21 sharing literals I am
wondering if it wouldn't be more efficient to use a maps there?

So the generated erlang file would be:

    -define(to_lookup_map, #{ Key1 => V1;
                                               Key2 => V2;
                                               ...
                                               KeyN => VN }).

     lookup(Key) -> maps:get(Key, ?to_lookup_map).


A maps would also have some benefit in compressing a little the info I
guess.

Thoughts?  Beside that maybe having that ressource in a memory mapped file
would be better? I believe that beams are fully loaded in RAM, aren't they?

Benoit
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20180820/9196204b/attachment.htm>


More information about the erlang-questions mailing list