[commit: packages/containers] changelog-foldtree, cleaned_bugfix394, master, merge-doc-target, merge-fixes-5.9, merge-restrict-fix-5.8, revert-408-bugfix_394: Speed up IntMap (51e7b00)

git at git.haskell.org git at git.haskell.org
Mon Apr 17 21:40:42 UTC 2017


Repository : ssh://git@git.haskell.org/containers

On branches: changelog-foldtree,cleaned_bugfix394,master,merge-doc-target,merge-fixes-5.9,merge-restrict-fix-5.8,revert-408-bugfix_394
Link       : http://git.haskell.org/packages/containers.git/commitdiff/51e7b00716a7ae090094d59afa4a58dfac4b26ef

>---------------------------------------------------------------

commit 51e7b00716a7ae090094d59afa4a58dfac4b26ef
Author: David Feuer <David.Feuer at gmail.com>
Date:   Sat May 7 20:54:24 2016 -0400

    Speed up IntMap
    
    `delete`, `alter`, `update`, etc., used a `bin` smart
    constructor to avoid installing any non-root `Nil`s. Now only
    the ones that could have become `Nil` are checked, which is
    a good bit cheaper since they're in cache. `adjustWithKey`
    was implemented using `updateWithKey`, but in fact it never
    needs to worry about `Nil`s, so implementing it directly
    eliminates all such checks.
    
    Make `updateLookupWithKey` in `Data.IntMap.Lazy` strict in its
    recursive call to avoid essentially useless lazy pair allocation.


>---------------------------------------------------------------

51e7b00716a7ae090094d59afa4a58dfac4b26ef
 Data/IntMap/Base.hs   | 56 ++++++++++++++++++++++++++++++++++-----------------
 Data/IntMap/Strict.hs | 32 ++++++++++++++++++-----------
 2 files changed, 58 insertions(+), 30 deletions(-)

Diff suppressed because of size. To see it, use:

    git diff-tree --root --patch-with-stat --no-color --find-copies-harder --ignore-space-at-eol --cc 51e7b00716a7ae090094d59afa4a58dfac4b26ef


More information about the ghc-commits mailing list