Repository : ssh://darcs.haskell.org//srv/darcs/packages/containers On branch : master
http://hackage.haskell.org/trac/ghc/changeset/ef6112461bdbb5574d57da2bebcea75f3cfc5fe6 >--------------------------------------------------------------- commit ef6112461bdbb5574d57da2bebcea75f3cfc5fe6 Author: Milan Straka <[email protected]> Date: Mon Apr 23 18:29:50 2012 +0200 Improve one of the benchmarked methods: lookupGE4. >--------------------------------------------------------------- benchmarks/LookupGE/LookupGE_IntMap.hs | 25 ++++++++----------------- 1 files changed, 8 insertions(+), 17 deletions(-) diff --git a/benchmarks/LookupGE/LookupGE_IntMap.hs b/benchmarks/LookupGE/LookupGE_IntMap.hs index 76fb705..4244339 100644 --- a/benchmarks/LookupGE/LookupGE_IntMap.hs +++ b/benchmarks/LookupGE/LookupGE_IntMap.hs @@ -53,27 +53,18 @@ lookupGE3 k t = k `seq` case t of lookupGE4 :: Key -> IntMap a -> Maybe (Key,a) lookupGE4 k t = k `seq` case t of - Bin _ m l r | m < 0 -> if k >= 0 then goNothing l - else goJust l r - _ -> goNothing t + Bin _ m l r | m < 0 -> if k >= 0 then go Nil l + else go l r + _ -> go Nil t where - goNothing (Bin p m l r) - | nomatch k p m = if k < p then fMin l else Nothing - | zero k m = goJust r l - | otherwise = goNothing r - goNothing (Tip ky y) - | k > ky = Nothing - | otherwise = Just (ky, y) - goNothing Nil = Nothing - - goJust def (Bin p m l r) + go def (Bin p m l r) | nomatch k p m = if k < p then fMin l else fMin def - | zero k m = goJust r l - | otherwise = goJust def r - goJust def (Tip ky y) + | zero k m = go r l + | otherwise = go def r + go def (Tip ky y) | k > ky = fMin def | otherwise = Just (ky, y) - goJust def Nil = fMin def + go def Nil = fMin def fMin :: IntMap a -> Maybe (Key, a) fMin Nil = Nothing _______________________________________________ Cvs-libraries mailing list [email protected] http://www.haskell.org/mailman/listinfo/cvs-libraries
