1
1
{-# OPTIONS_GHC -ddump-simpl -ddump-to-file -dsuppress-all -dno-typeable-binds -dno-suppress-type-signatures #-}
2
2
import qualified Array
3
3
import Test.Tasty.Bench
4
- import qualified Fleet.Array as DiffArray
5
- import Fleet.Array (DiffArray )
4
+ import qualified Fleet.Array as Fleet
6
5
import Quicksort (quicksort )
7
6
import qualified QuicksortA
8
7
9
8
class Indexable a where
10
9
(!) :: a -> Int -> Int
11
10
11
+ instance Indexable (Fleet. Array Int ) where
12
+ (!) = (Fleet. !)
12
13
instance Indexable (Array. Array Int ) where
13
14
(!) = (Array. !)
14
- instance Indexable (DiffArray Int ) where
15
- (!) = (DiffArray. !)
16
15
17
16
loop :: Indexable a => a -> Int -> Int -> Int
18
17
loop _ 1 s = s
@@ -23,7 +22,7 @@ fooA :: Array.Array Int -> Int
23
22
fooA arr = loop arr (arr ! 1 ) 0
24
23
25
24
{-# NOINLINE fooDA #-}
26
- fooDA :: DiffArray Int -> Int
25
+ fooDA :: Fleet. Array Int -> Int
27
26
fooDA arr = loop arr (arr ! 1 ) 0
28
27
29
28
list :: [Int ]
@@ -33,31 +32,31 @@ main :: IO ()
33
32
main = do
34
33
let
35
34
arrA = Array. fromList list
36
- arrDA = DiffArray . fromList list
35
+ arrDA = Fleet . fromList list
37
36
print $ fooA arrA
38
37
print $ fooDA arrDA
39
38
let
40
- ! arr10 = DiffArray . fromList list
41
- ! arr9 = DiffArray . set 0 0 arr10
42
- ! arr8 = DiffArray . set 0 0 arr9
43
- ! arr7 = DiffArray . set 0 0 arr8
44
- ! arr6 = DiffArray . set 0 0 arr7
45
- ! arr5 = DiffArray . set 0 0 arr6
46
- ! arr4 = DiffArray . set 0 0 arr5
47
- ! arr3 = DiffArray . set 0 0 arr4
48
- ! arr2 = DiffArray . set 0 0 arr3
49
- ! arr1 = DiffArray . set 0 0 arr2
50
- ! arr0 = DiffArray . set 0 0 arr1
39
+ ! arr10 = Fleet . fromList list
40
+ ! arr9 = Fleet . set 0 0 arr10
41
+ ! arr8 = Fleet . set 0 0 arr9
42
+ ! arr7 = Fleet . set 0 0 arr8
43
+ ! arr6 = Fleet . set 0 0 arr7
44
+ ! arr5 = Fleet . set 0 0 arr6
45
+ ! arr4 = Fleet . set 0 0 arr5
46
+ ! arr3 = Fleet . set 0 0 arr4
47
+ ! arr2 = Fleet . set 0 0 arr3
48
+ ! arr1 = Fleet . set 0 0 arr2
49
+ ! arr0 = Fleet . set 0 0 arr1
51
50
! marr <- QuicksortA. fromList list
52
51
defaultMain
53
52
[ bench " array" $ whnf fooA (Array. fromList list)
54
- , bench " diffarray " $ whnf fooDA arr0
55
- , bench " diffarray 1" $ whnf fooDA arr1
56
- , bench " diffarray 2" $ whnf fooDA arr2
57
- , bench " diffarray 5" $ whnf fooDA arr5
58
- , bench " diffarray 7" $ whnf fooDA arr7
59
- , bench " diffarray 10" $ whnf fooDA arr10
53
+ , bench " fleet " $ whnf fooDA arr0
54
+ , bench " fleet 1" $ whnf fooDA arr1
55
+ , bench " fleet 2" $ whnf fooDA arr2
56
+ , bench " fleet 5" $ whnf fooDA arr5
57
+ , bench " fleet 7" $ whnf fooDA arr7
58
+ , bench " fleet 10" $ whnf fooDA arr10
60
59
, bench " quicksort array" $ whnfIO (QuicksortA. clone marr >>= \ marr' -> QuicksortA. quicksort marr' 0 9973 )
61
- , bench " quicksort diffarray " $ whnf (Quicksort. quicksort 0 9973 ) (DiffArray . copy arr0)
62
- , bench " quicksort diffarray copy" $ whnf (Quicksort. quicksort 0 9973 . DiffArray . copy) arr0
60
+ , bench " quicksort fleet " $ whnf (Quicksort. quicksort 0 9973 ) (Fleet . copy arr0)
61
+ , bench " quicksort fleet copy" $ whnf (Quicksort. quicksort 0 9973 . Fleet . copy) arr0
63
62
]
0 commit comments