packages feed

data-sketches 0.1.0.1 → 0.1.0.2

raw patch · 4 files changed

+40/−26 lines, 4 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

Files

data-sketches.cabal view
@@ -5,13 +5,13 @@ -- see: https://github.com/sol/hpack  name:           data-sketches-version:        0.1.0.1-description:    Please see the README on GitHub at <https://github.com/iand675/streaming-quantiles#readme>-homepage:       https://github.com/iand675/data-sketches#readme-bug-reports:    https://github.com/iand675/data-sketches/issues+version:        0.1.0.2+description:    Please see the README on GitHub at <https://github.com/iand675/datasketches-haskell#readme>+homepage:       https://github.com/iand675/datasketches-haskell#readme+bug-reports:    https://github.com/iand675/datasketches-haskell/issues author:         Ian Duncan, Rob Bassi maintainer:     ian@iankduncan.com-copyright:      2021 Ian Duncan, Rob Bassi, Mercury Bank+copyright:      2021 Ian Duncan, Rob Bassi, Mercury Technologies license:        Apache license-file:   LICENSE build-type:     Simple@@ -25,7 +25,7 @@  source-repository head   type: git-  location: https://github.com/iand675/data-sketches+  location: https://github.com/iand675/datasketches-haskell  library   exposed-modules:
src/DataSketches/Quantiles/RelativeErrorQuantile.hs view
@@ -62,7 +62,7 @@ import Control.Monad.Primitive import Control.Monad.Trans import Data.Bits (shiftL)-import Data.Vector ((!))+import Data.Vector ((!), imapM_) import qualified Data.Vector as Vector import Data.Primitive.MutVar import Data.Proxy@@ -84,6 +84,7 @@ import Control.Exception (throw, assert) import GHC.Generics import System.Random.MWC (Gen, create)+import qualified Data.Vector.Generic.Mutable as MG  data ReqSketch (k :: Nat) s = ReqSketch   { rankAccuracySetting :: !RankAccuracy@@ -460,20 +461,21 @@ compress :: (PrimMonad m, KnownNat k) => ReqSketch k (PrimState m) -> m () compress this = do   compactors <- getCompactors this-  Vector.iforM_ compactors $ \height compactor -> do-    buffSize <- DoubleBuffer.getCount =<< Compactor.getBuffer compactor-    nominalCapacity <- Compactor.getNominalCapacity compactor-    when (buffSize >= nominalCapacity) $ do-      numLevels <- getNumLevels this-      when (height + 1 >= numLevels) $ do-        grow this-      compactors' <- getCompactors this-      cReturn <- Compactor.compact compactor-      let topCompactor = compactors' ! (height + 1)-      buff <- Compactor.getBuffer topCompactor-      DoubleBuffer.mergeSortIn buff $ Compactor.crDoubleBuffer cReturn-      modifyURef (retainedItems this) (+ Compactor.crDeltaRetItems cReturn)-      modifyURef (maxNominalCapacitiesSize this) (+ Compactor.crDeltaNominalSize cReturn)+  let compressionStep height compactor = do+        buffSize <- DoubleBuffer.getCount =<< Compactor.getBuffer compactor+        nominalCapacity <- Compactor.getNominalCapacity compactor+        when (buffSize >= nominalCapacity) $ do+          numLevels <- getNumLevels this+          when (height + 1 >= numLevels) $ do+            grow this+          compactors' <- getCompactors this+          cReturn <- Compactor.compact compactor+          let topCompactor = compactors' ! (height + 1)+          buff <- Compactor.getBuffer topCompactor+          DoubleBuffer.mergeSortIn buff $ Compactor.crDoubleBuffer cReturn+          modifyURef (retainedItems this) (+ Compactor.crDeltaRetItems cReturn)+          modifyURef (maxNominalCapacitiesSize this) (+ Compactor.crDeltaNominalSize cReturn)+  imapM_ compressionStep compactors    writeMutVar (aux this) Nothing  -- | Merge other sketch into this one.
src/DataSketches/Quantiles/RelativeErrorQuantile/Internal/Auxiliary.hs view
@@ -26,6 +26,7 @@ import DataSketches.Quantiles.RelativeErrorQuantile.Internal.InequalitySearch (find) import qualified DataSketches.Quantiles.RelativeErrorQuantile.Internal.InequalitySearch as IS import Debug.Trace+import qualified Data.Vector.Generic.Mutable as MG  data ReqAuxiliary = ReqAuxiliary   { raWeightedItems :: {-# UNPACK #-} !(U.Vector (Double, Word64))@@ -95,13 +96,24 @@ createCumulativeWeights this = do   weights <- getWeights this   let size = MUVector.length weights-  MUVector.iforM_ weights $ \i weight -> do-    when (i > 0) $ do-      prevWeight <- MUVector.read weights (i - 1)-      MUVector.unsafeWrite weights i (weight + prevWeight)+  let accumulateM i weight = do+        when (i > 0) $ do+          prevWeight <- MUVector.read weights (i - 1)+          MUVector.unsafeWrite weights i (weight + prevWeight)+  forI_ weights (\i -> MUVector.read weights i >>= \x -> accumulateM i x)   lastWeight <- MUVector.read weights (size - 1)   when (lastWeight /= mraSize this) $ do     error "invariant violated: lastWeight does not equal raSize"+  where+    forI_ :: (Monad m, MG.MVector v a) => v (PrimState m) a -> (Int -> m b) -> m ()+    {-# INLINE forI_ #-}+    forI_ v f = loop 0+      where+        loop i +          | i >= n    = return ()+          | otherwise = f i >> loop (i + 1)+        n = MG.length v+  dedup :: PrimMonad m => MReqAuxiliary (PrimState m) -> m () dedup this = do
src/DataSketches/Quantiles/RelativeErrorQuantile/Internal/Compactor.hs view
@@ -19,7 +19,7 @@ import Data.Semigroup (Semigroup) import Data.Word import DataSketches.Quantiles.RelativeErrorQuantile.Types-import System.Random.MWC (create, Variate(uniform), Uniform (uniformM), Gen)+import System.Random.MWC (create, Variate(uniform), Gen) import Control.Exception (assert) import Control.Monad (when) import Control.Monad.Trans