Improve {Map,Set}.fromDistinctAscList.
authorMilan Straka <fox@ucw.cz>
Thu, 30 Aug 2012 15:28:49 +0000 (17:28 +0200)
committerMilan Straka <fox@ucw.cz>
Thu, 30 Aug 2012 15:28:49 +0000 (17:28 +0200)
commitb51842247a149368f963fa1ab242d8eccfff63b6
treed9ddff72d52205d468a2aef780473f0b9126e75f
parent24a226afa7ad669672f58021c84079751dec6171
Improve {Map,Set}.fromDistinctAscList.

Benchmarks show 42% improvement for Map and 39% improvement for Set.

The new implementation builds the map on the fly, without needing to
know the number of elements in the list. It proceeds by building a map
of size 2^1-1, 2^2-1, 2^3-1, .... When the input list is empty, there is
at most log N trees left. These are joined from the smallest to the
largest.
Data/Map/Base.hs
Data/Map/Strict.hs
Data/Set/Base.hs