ttrie 0.1.2 → 0.1.2.1
raw patch · 6 files changed
+24/−24 lines, 6 filesdep ~QuickCheckdep ~test-frameworkdep ~test-framework-quickcheck2
Dependency ranges changed: QuickCheck, test-framework, test-framework-quickcheck2
Files
- README.md +1/−1
- benchmarks/Bench.hs +6/−13
- benchmarks/run.sh +5/−5
- changelog.md +4/−0
- src/Control/Concurrent/STM/Map.hs +3/−0
- ttrie.cabal +5/−5
README.md view
@@ -7,4 +7,4 @@ This is an implementation of the *transactional trie*, which is basically a *lock-free concurrent hash trie* lifted into STM. For a detailed discussion, including an evaluation of its performance,-see Chapter 4 of [my master's thesis](https://github.com/mcschroeder/thesis).+see Chapter 3 of [my master's thesis](https://github.com/mcschroeder/thesis).
benchmarks/Bench.hs view
@@ -181,20 +181,13 @@ instance (NFData a) => NFData (TVar a) -hashmapPrefill :: PrefillFunc (TVar (HashMap.HashMap Key (TVar ())))+hashmapPrefill :: PrefillFunc (TVar (HashMap.HashMap Key ())) hashmapPrefill ks = do- elems <- forM ks (\k -> newTVarIO () >>= \v -> return (k,v))- m <- newTVarIO $ HashMap.fromList elems+ let m = HashMap.fromList $ zip ks $ repeat () evaluate (rnf m)- return m+ newTVarIO m -hashmapEval :: EvalFunc (TVar (HashMap.HashMap Key (TVar ())))-hashmapEval Lookup k m = do- v <- HashMap.lookup k <$> readTVar m- case v of- Just v -> void $ readTVar v- Nothing -> return ()-hashmapEval Insert k m = do- v <- newTVar ()- modifyTVar' m (HashMap.insert k v)+hashmapEval :: EvalFunc (TVar (HashMap.HashMap Key ()))+hashmapEval Lookup k m = void $ HashMap.lookup k <$> readTVar m+hashmapEval Insert k m = modifyTVar' m (HashMap.insert k ()) hashmapEval Delete k m = modifyTVar' m (HashMap.delete k)
benchmarks/run.sh view
@@ -13,11 +13,11 @@ bench $THREADS $NUM_TX "[(1,1)]" $NUM_TX "(0,0,0,1)" "results/1/delete" mkdir -p "results/5"- bench $THREADS $NUM_TX $TX_SIZE 0 "(70,10,10,10)" "results/update/5/insert"- bench $THREADS $NUM_TX $TX_SIZE $NUM_PREFILL "(10,70,10,10)" "results/update/5/update"- bench $THREADS $NUM_TX $TX_SIZE $NUM_PREFILL "(10,10,70,10)" "results/update/5/lookup"- bench $THREADS $NUM_TX $TX_SIZE $NUM_PREFILL "(10,10,10,70)" "results/update/5/delete" - bench $THREADS $NUM_TX $TX_SIZE $NUM_PREFILL "(25,25,25,25)" "results/update/5/balanced-prefill"+ bench $THREADS $NUM_TX $TX_SIZE 0 "(70,10,10,10)" "results/5/insert"+ bench $THREADS $NUM_TX $TX_SIZE $NUM_PREFILL "(10,70,10,10)" "results/5/update"+ bench $THREADS $NUM_TX $TX_SIZE $NUM_PREFILL "(10,10,70,10)" "results/5/lookup"+ bench $THREADS $NUM_TX $TX_SIZE $NUM_PREFILL "(10,10,10,70)" "results/5/delete"+ bench $THREADS $NUM_TX $TX_SIZE $NUM_PREFILL "(25,25,25,25)" "results/5/balanced" # sudo shutdown -h now }
changelog.md view
@@ -1,3 +1,7 @@+# 0.1.2.1 (November 2015)+ * Eliminate a redundant import warning on GHC 7.10+ * Loosen test-suite dependency bounds+ # 0.1.2 (May 2015) * Add a 'member' convenience function
src/Control/Concurrent/STM/Map.hs view
@@ -1,3 +1,4 @@+{-# LANGUAGE CPP #-} {-# LANGUAGE PatternGuards #-} {-# OPTIONS_GHC -funbox-strict-fields #-} @@ -29,7 +30,9 @@ , unsafeToList ) where +#if __GLASGOW_HASKELL__ < 710 import Control.Applicative ((<$>))+#endif import Control.Concurrent.STM import Control.Monad import Data.Atomics
ttrie.cabal view
@@ -1,5 +1,5 @@ name: ttrie-version: 0.1.2+version: 0.1.2.1 synopsis: Contention-free STM hash map description: A contention-free STM hash map.@@ -35,7 +35,7 @@ other-modules: Data.SparseArray default-language: Haskell2010 ghc-options: -Wall- build-depends: base >=4.7 && <4.8+ build-depends: base >=4.7 && <5 , atomic-primops >=0.6 , hashable >=1.2 , primitive >=0.5@@ -48,9 +48,9 @@ build-depends: base- , QuickCheck ==2.5.*- , test-framework ==0.8.*- , test-framework-quickcheck2 ==0.3.*+ , QuickCheck >=2.5+ , test-framework >=0.8+ , test-framework-quickcheck2 >=0.3 , containers >=0.5 , hashable >=1.2 , stm