heapsize-0.2.0: Determine the size of runtime data structures
Copyright(c) Michail Pardalos
License3-Clause BSD-style
Maintainermpardalos@gmail.com
Safe HaskellNone
LanguageHaskell2010

HeapSize

Description

Based on GHC.Datasize by Dennis Felsing

Synopsis

Documentation

recursiveSize :: a -> Heapsize Int Source #

Calculate the recursive size of GHC objects in Bytes. Note that the actual size in memory is calculated, so shared values are only counted once.

Call with recursiveSize $! 2 to force evaluation to WHNF before calculating the size.

Call with recursiveSize $!! "foobar" ($!! from Control.DeepSeq) to force full evaluation before calculating the size.

This function works very quickly on small data structures, but can be slow on large and complex ones. If speed is an issue it's probably possible to get the exact size of a small portion of the data structure and then estimate the total size from that.

recursiveSizeNF :: NFData a => a -> Heapsize Int Source #

Calculate the recursive size of GHC objects in Bytes after calling Control.DeepSeq.force on the data structure to force it into Normal Form. Using this function requires that the data structure has an NFData typeclass instance.

closureSize :: a -> IO Int Source #

Get the *non-recursive* size of an closure in words

data Heapsize a Source #

Instances

Instances details
Monad Heapsize Source # 
Instance details

Defined in HeapSize

Methods

(>>=) :: Heapsize a -> (a -> Heapsize b) -> Heapsize b #

(>>) :: Heapsize a -> Heapsize b -> Heapsize b #

return :: a -> Heapsize a #

Functor Heapsize Source # 
Instance details

Defined in HeapSize

Methods

fmap :: (a -> b) -> Heapsize a -> Heapsize b #

(<$) :: a -> Heapsize b -> Heapsize a #

Applicative Heapsize Source # 
Instance details

Defined in HeapSize

Methods

pure :: a -> Heapsize a #

(<*>) :: Heapsize (a -> b) -> Heapsize a -> Heapsize b #

liftA2 :: (a -> b -> c) -> Heapsize a -> Heapsize b -> Heapsize c #

(*>) :: Heapsize a -> Heapsize b -> Heapsize b #

(<*) :: Heapsize a -> Heapsize b -> Heapsize a #

MonadIO Heapsize Source # 
Instance details

Defined in HeapSize

Methods

liftIO :: IO a -> Heapsize a #

MonadThrow Heapsize Source # 
Instance details

Defined in HeapSize

Methods

throwM :: Exception e => e -> Heapsize a #

MonadCatch Heapsize Source # 
Instance details

Defined in HeapSize

Methods

catch :: Exception e => Heapsize a -> (e -> Heapsize a) -> Heapsize a #

MonadMask Heapsize Source # 
Instance details

Defined in HeapSize

Methods

mask :: ((forall a. Heapsize a -> Heapsize a) -> Heapsize b) -> Heapsize b #

uninterruptibleMask :: ((forall a. Heapsize a -> Heapsize a) -> Heapsize b) -> Heapsize b #

generalBracket :: Heapsize a -> (a -> ExitCase b -> Heapsize c) -> (a -> Heapsize b) -> Heapsize (b, c) #