Proposal: add 'findLess' and variants to containers
Twan van Laarhoven
twanvl at gmail.com
Fri Feb 17 22:21:07 CET 2012
On 16/02/12 20:37, Johan Tibell wrote:
> Hi,
>
> First, thanks for writing such a detailed proposal.
>
> I don't have strong feelings one way or the other. Like always I'm
> worried about API growth. How about performance? Can these functions
> be implemented efficiently outside the library?
I also did some performance tests, comparing an implementation that uses only
the exposed API (split,findMin) to one that uses the constructors. The benchmark
code is attached, it is mostly copy-pasted from benchmarks/Map.hs. Here is a
general idea of the results (ghc 7.0.4 on windows 7) :
benchmarking GE split absent (based on exposed library)
mean: 298.6235 us, lb 295.8455 us, ub 301.4016 us, ci 0.950
std dev: 14.43998 us, lb 12.51990 us, ub 19.21979 us, ci 0.950
benchmarking GE custom absent
mean: 45.04386 us, lb 44.62368 us, ub 45.42206 us, ci 0.950
std dev: 2.075708 us, lb 1.874807 us, ub 2.362928 us, ci 0.950
The results on other benchmarks are similar: A custom implementation is 4-6
times faster.
I haven't yet compared the performance for Set yet (which I expect will be
similar), nor for IntMap (where I have no clue).
Besides the question of whether these functions can be implemented efficiently
outside the library, I think you should also ask whether they can be implemented
in a way that is obviously correct. I argued in the proposal that this is not
the case, which is another argument for adding them.
Twan
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: findGE-Map.hs
URL: <http://www.haskell.org/pipermail/libraries/attachments/20120217/ff38f752/attachment.txt>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: Map_FindGE.hs
URL: <http://www.haskell.org/pipermail/libraries/attachments/20120217/ff38f752/attachment.asc>
More information about the Libraries
mailing list