Age | Commit message (Collapse) | Author |
|
The current implementation is roughly O(N*M) where N is the number of items to be removed, and M is the number of items in the map. This does not include the cost of `maps:from_list` or `maps:to_list`. This leads to pretty horrifying execution times on large maps regardless of how many or few keys are to be removed.
The new implementation is O(N) where N is the number of items to be removed. For each N there's the cost of removing a key from a map, and but in practice that turns out to be a vast improvement for all map sizes I tested
The new maps:take/2 implementation similarly builds a list of keys and values by iterating only the list of desired keys, and then hands it off to maps:from_list. This turned out to be faster than N maps:put calls.
|
|
|
|
|
|
|
|
Bad input to maps module function will now yield exceptions:
* {badmap,NotMap} or,
* badarg
|
|
* kittee/maps_only:
maps:only/2 -> maps:with/2
add maps:only/2
|
|
|
|
|
|
probably a copy&paste error from maps:keys()
|
|
|
|
|
|
|
|
The HiPE compiler crashes when trying to compile these files because
it does not currently support maps. So, add a -compile(no_native)
attribute to these files to allow the system to be made even when
configured with --enable-native-libs.
This is a temporary fix and will be removed when the HiPE compiler
gets proper support for maps.
|
|
This means replacing maps:foldl/3 and maps:foldr/3 with maps:fold/3.
|
|
This commit requires Map enabled bootstrap compiler.
|
|
|
|
Name conforms to EEP.
|