ushalow
[clean-tests.git] / benchmark / test.icl
1 module test
2
3 import iTasks
4 import Data.Func
5 import Debug.Performance
6 import iTasks.Extensions.Terminal
7 import Text.Terminal.VT100
8
9 n :== 5000
10
11 Start w
12 = printTime (toString n +++ " steps: ") (doTasks $ onStartup $ steps n)
13 $ printTime (toString n +++ " sequence: ") (doTasks $ onStartup $ seq n)
14 $ printTime (toString n +++ " all: ") (doTasks $ onStartup $ all n)
15 $ printTime (toString n +++ " for: ") (doTasks $ onStartup $ for n)
16 $ printTime (toString (n/100) +++ " exproc: ") (doTasks $ onStartup $ exp (n/100))
17 $ printTime (toString n +++ " get: ") (doTasks $ onStartup $ getter n)
18 $ printTime (toString n +++ " set: ") (doTasks $ onStartup $ setter n)
19 $ printTime (toString n +++ " upd: ") (doTasks $ onStartup $ updater n)
20 $ printTime (toString n +++ " view: ") (doTasks $ onStartup $ view n)
21 $ printTime (toString n +++ " update: ") (doTasks $ onStartup $ update n)
22 $ w
23
24 sds = sharedStore "bork" 42
25
26 steps :: Int -> Task Int
27 steps 0 = return 0
28 steps n = return n @ dec >>= steps
29
30 seq :: Int -> Task [Int]
31 seq n = sequence (repeatn n (return 42))
32
33 all :: Int -> Task [Int]
34 all n = allTasks (repeatn n (return 42))
35
36 for :: Int -> Task Int
37 for n = foreverStIf (\x->x < n) 0 (return o inc)
38
39 exp :: Int -> Task Int
40 exp 0 = return 0
41 exp n = runProcessInteractive zero "/bin/ls" [] Nothing
42 >>| exp (n-1)
43
44 getter :: Int -> Task Int
45 getter 0 = return 0
46 getter n = get sds >>| getter (n-1)
47
48 setter :: Int -> Task Int
49 setter 0 = return 0
50 setter n = set 42 sds >>| setter (n-1)
51
52 updater :: Int -> Task Int
53 updater 0 = return 0
54 updater n = upd id sds >>| updater (n-1)
55
56 view :: Int -> Task Int
57 view 0 = return 0
58 view n = viewInformation () [] n >>~ view o dec
59
60 update :: Int -> Task Int
61 update 0 = return 0
62 update n = updateInformation () [] n >>~ update o dec