[erlang-questions] maps or records?
Michael Truog
mjtruog@REDACTED
Sun Feb 28 02:17:17 CET 2016
On 02/27/2016 04:42 PM, Björn-Egil Dahlberg wrote:
> Whoa there ..
>
> I just want to point out that you shouldn't have record sizes of
> upwards 100 elements. If the only thing you do is read them you are
> fine but normally we do both reads and updates. I would say 50 is the
> limit but even then you are pushing it. Above 30 I would consider
> splitting the array into a tree.
Records are preprocessing syntax (sweet syntactic sugar) for tuples and
I am just going based on my benchmarking of tuples. I know tuples are
generally ok for 100 elements and less (not trying to encourage making
large records with tons of values). I also know that record use can
minimize tuple changes via
http://erlang.org/doc/efficiency_guide/commoncaveats.html#id57442 which
would not happen with small maps that are only using tuples (i.e., a map
that is not larger than 32 elements, |MAP_SMALL_MAP_LIMIT).|
>
> I think records has there place. There is some overlap between maps
> and records for sure and I think I agree with most of the things that
> has already been said.
> The dialyzer support for maps could be stronger. It is pretty weak at
> the moment. Data modeling with records is easier.
>
> I would consider using records within a module, if it's never changed
> or upgraded and never leaks out to any other modules. Maybe between
> modules within an application. Maybe. But I think you are better off
> with maps in that case.
Yes, records can cause maintenance and dependency problems. If the code
needs to be tied to changes of a database or protocol, it might be worth
it, but it depends on the situation.
>
> // Björn-Egil
>
>
> 2016-02-28 1:17 GMT+01:00 Michael Truog <mjtruog@REDACTED
> <mailto:mjtruog@REDACTED>>:
>
> On 02/26/2016 06:50 AM, Benoit Chesneau wrote:
>> Hi all,
>>
>> i tends these days to use maps instead of records, so you dont'
>> have to include a file to retrieve the "schema" but I wonder if
>> this is a good idea or not. Is there still some usage for records
>> vs maps?
>>
>> - benoît
>>
>>
>> _______________________________________________
>> erlang-questions mailing list
>> erlang-questions@REDACTED <mailto:erlang-questions@REDACTED>
>> http://erlang.org/mailman/listinfo/erlang-questions
> Records allow you to specify type specification information, while
> maps do not. Records are basic and efficient with the number of
> elements 100 or less, while maps are great for dynamic use that
> doesn't depend on type specification information. So, for process
> state information, records provide more information when checking
> dialyzer for problems. Records can also provide more checking
> with dialyzer when storing database or protocol data (two places
> where types are generally important for development).
>
> For dynamic key/value data, dict can use type specification
> information while maps don't, so there can also be motivation to
> use dicts instead of maps, even if only switching between the two
> for running dialyzer. maps are great for efficient key/value
> access though.
>
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED <mailto:erlang-questions@REDACTED>
> http://erlang.org/mailman/listinfo/erlang-questions
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20160227/7d6f7bd3/attachment.htm>
More information about the erlang-questions
mailing list