Proposal: Further performance improvements of Data.Set

Milan Straka fox at ucw.cz
Tue Sep 14 12:36:43 EDT 2010


Hi,

> Hi,
> 
> see http://hackage.haskell.org/trac/ghc/ticket/4312.
> 
> The following text is the description of ticket 4312:
> 
> This proposal depends on #4280.
> 
> This proposal further improves the performance of Data.Set. It consists of five patches:
> 
>    1. making the set datatype to store the elements evaluated (by using a bang). This is in accordance with a poll on libraries@…, see point 1) of  http://article.gmane.org/gmane.comp.lang.haskell.libraries/13273
>    2. improvements to union and difference implementation (by eliminating high-order function)
>    3. improvements to balance function which is used by nearly all methods modifying a set (making one monolithic function which allows perform only one pattern-match on the tree nodes)
>    4. correction of the test (the Arbitrary instance could generate unbalanced trees, which the patch 3. discovered)
>    5. added benchmark of union, difference and intersection methods 
> 
> On i386 Intel Core2 and GHC 6.12.1, the improvements are
> 
> delete       13.46
> deleteMax    13.58
> deleteMin    15.93
> difference   26.17
> insert       12.20
> intersection 2.21
> member       9.52
> union        27.59

As in Data.Map, the improvements are in % and were measured with the
benchmark, which is part of the patches.

Cheers,
Milan

> 
> The repository of the containers package with these patches (and also several others) is at  http://fox.auryn.cz/darcs/containers/.
> 
> The patches are also attached (including #4280)
> _______________________________________________
> Libraries mailing list
> Libraries at haskell.org
> http://www.haskell.org/mailman/listinfo/libraries
> 


More information about the Libraries mailing list