LogicGrowsOnTrees-processes 1.0.0.1 → 1.0.0.2
raw patch · 3 files changed
+54/−28 lines, 3 files
Files
- CHANGELOG.md +18/−0
- LogicGrowsOnTrees-processes.cabal +4/−3
- benchmarks/benchmark.hs +32/−25
+ CHANGELOG.md view
@@ -0,0 +1,18 @@+Version 1.0.0.2+===============++* Added some examples and benchmarks files that I had forgotten to put in the+ repository.+++Version 1.0.0.1+===============++* Improved performance.++* Exposed `getCurentStatistics` in the `RequestQueueMonad`, allowing one to+ obtain the statistics at any time during the run.++* Bumped dependency bounds.++* Deleted some vestigial code and imports.
LogicGrowsOnTrees-processes.cabal view
@@ -1,5 +1,5 @@ Name: LogicGrowsOnTrees-processes-Version: 1.0.0.1+Version: 1.0.0.2 License: BSD3 License-file: LICENSE Author: Gregory Crosswhite@@ -13,6 +13,8 @@ multiple processes for parallelism; see the module documentation for more details. +Extra-source-files: CHANGELOG.md+ Bug-reports: https://github.com/gcross/LogicGrowsOnTrees-processes/issues Source-Repository head@@ -22,8 +24,7 @@ Source-Repository this Type: git Location: git://github.com/gcross/LogicGrowsOnTrees-processes.git- Tag: 1.0.0.1-+ Tag: 1.0.0.2 Library Build-depends:
benchmarks/benchmark.hs view
@@ -1,47 +1,54 @@+{-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE UnicodeSyntax #-} +import Prelude hiding (catch)++import Control.Exception (SomeException,catch) import Criterion.Main import Data.Monoid import System.Environment+import System.IO import LogicGrowsOnTrees import LogicGrowsOnTrees.Checkpoint-import LogicGrowsOnTrees.Utils.PerfectTree+import LogicGrowsOnTrees.Utils.PerfectTree (trivialPerfectTree) import LogicGrowsOnTrees.Utils.WordSum import qualified LogicGrowsOnTrees.Parallel.Adapter.Processes as Processes import qualified LogicGrowsOnTrees.Parallel.Adapter.Threads as Threads import LogicGrowsOnTrees.Parallel.Adapter.Threads (setNumberOfWorkers) import LogicGrowsOnTrees.Parallel.Common.Worker (exploreTreeGeneric)-import LogicGrowsOnTrees.Parallel.ExplorationMode (ExplorationMode(AllMode))+import LogicGrowsOnTrees.Parallel.ExplorationMode (AllMode,ExplorationMode(AllMode)) import LogicGrowsOnTrees.Parallel.Main import LogicGrowsOnTrees.Parallel.Purity (Purity(Pure)) -main = defaultMain+depth = 15++main = do+ args ← getArgs+ case args of+ ["worker-bee"] →+ Processes.runWorkerUsingHandles+ AllMode+ Pure+ (trivialPerfectTree 2 depth)+ stdin+ stdout+ `catch`+ (\(e::SomeException) → error $ "Worker process failed: " ++ show e)+ _ → Processes.getProgFilepath >>= defaultMain . benchmarks++benchmarks worker_filepath = [bench "list" $ nf (getWordSum . mconcat . trivialPerfectTree 2) depth ,bench "tree" $ nf (getWordSum . exploreTree . trivialPerfectTree 2) depth ,bench "tree w/ checkpointing" $ nf (getWordSum . exploreTreeStartingFromCheckpoint Unexplored . trivialPerfectTree 2) depth ,bench "tree using worker" $ exploreTreeGeneric AllMode Pure (trivialPerfectTree 2 depth)- ,bench "tree using single thread (direct)" $ Threads.exploreTree (setNumberOfWorkers 1) (trivialPerfectTree 2 depth)- ,bench "tree using single thread (main)" $- withArgs ["-n1"] $- simpleMainForExploreTree- Threads.driver- (const $ return ())- (trivialPerfectTree 2 depth)- ,bench "tree using single process (direct)" $- Processes.runExplorer- (const AllMode)- Pure- (return ((),()))+ ,bench "tree using single thread" $ Threads.exploreTree (setNumberOfWorkers 1) (trivialPerfectTree 2 depth)+ ,bench "tree using single process" $+ Processes.runSupervisor+ (AllMode :: ExplorationMode (AllMode WordSum))+ worker_filepath+ ["worker-bee"] (const $ return ())- (const $ trivialPerfectTree 2 depth)- (\_ _ → return mempty)- (\_ _ → setNumberOfWorkers 1)- ,bench "tree using single process (main)" $- withArgs ["-n1"] $- simpleMainForExploreTree- Processes.driver- (const $ return ())- (trivialPerfectTree 2 depth)+ mempty+ (setNumberOfWorkers 1) ]- where depth = 15