Mercurial > hg > Members > toma > Jungle-haskell
annotate test/ParRead.hs @ 28:c1ad4362093d default tip
add script files
author | Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 07 Feb 2014 20:19:32 +0900 |
parents | efb4e880ac7f |
children |
rev | line source |
---|---|
8 | 1 {-# LANGUAGE OverloadedStrings #-} |
2 | |
3 import Control.Parallel | |
4 import Control.Parallel.Strategies | |
5 import Text.Printf | |
6 import Jungle | |
7 import Data.Maybe | |
8 import Data.List | |
9 import Data.Time.Clock | |
10 import qualified Data.ByteString.Lazy.Char8 as B | |
11 import Control.Exception | |
12 import System.Environment | |
13 | |
14 | |
15 main = do | |
20
97d1e67aef15
add STM in Jungle map
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
11
diff
changeset
|
16 jungle <- createJungle |
97d1e67aef15
add STM in Jungle map
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
11
diff
changeset
|
17 createTree jungle "test_tree" |
97d1e67aef15
add STM in Jungle map
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
11
diff
changeset
|
18 node <- getRootNode jungle "test_tree" |
8 | 19 let |
20
97d1e67aef15
add STM in Jungle map
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
11
diff
changeset
|
20 x = testTree node 8 |
21 | 21 size_x = size x |
22 putStrLn $ show $ size_x | |
20
97d1e67aef15
add STM in Jungle map
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
11
diff
changeset
|
23 updateRootNode jungle "test_tree" x |
97d1e67aef15
add STM in Jungle map
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
11
diff
changeset
|
24 node2 <- getRootNode jungle "test_tree" |
8 | 25 t0 <- getCurrentTime |
26 printTimeSince t0 | |
25
efb4e880ac7f
add simple parallel execution test
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
21
diff
changeset
|
27 let result = map (func node2) [1..1000] `using` parList rpar |
21 | 28 print (length (filter (> size_x) result)) |
8 | 29 printTimeSince t0 |
30 | |
31 | |
21 | 32 func node num = size (addc c node [1,1]) |
33 where | |
34 c = num `mod` 5 | |
8 | 35 |
36 | |
37 -- ある程度の大きさの木を作れる | |
20
97d1e67aef15
add STM in Jungle map
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
11
diff
changeset
|
38 -- size $ testTree y 2 = 10 |
97d1e67aef15
add STM in Jungle map
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
11
diff
changeset
|
39 -- size $ testTree y 6 = 11742 |
97d1e67aef15
add STM in Jungle map
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
11
diff
changeset
|
40 -- size $ testTree y 8 = 876808 |
97d1e67aef15
add STM in Jungle map
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
11
diff
changeset
|
41 testTree node h = foldl' (add (h-1)) node (concatMap permutations . subsequences $ [1..h]) |
8 | 42 where |
20
97d1e67aef15
add STM in Jungle map
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
11
diff
changeset
|
43 add x node h = addc x node h |
8 | 44 |
20
97d1e67aef15
add STM in Jungle map
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
11
diff
changeset
|
45 -- x回addNewChildAtする |
97d1e67aef15
add STM in Jungle map
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
11
diff
changeset
|
46 addc 0 node h = addNewChildAt node h |
97d1e67aef15
add STM in Jungle map
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
11
diff
changeset
|
47 addc x node h = addNewChildAt (addc (x-1) node h) h |
8 | 48 |
49 printTimeSince t0 = do | |
50 t1 <- getCurrentTime | |
51 printf "time: %.2fs\n" (realToFrac (diffUTCTime t1 t0) :: Double) |