11{-# OPTIONS_GHC -ddump-simpl -ddump-to-file -dsuppress-all -dno-typeable-binds -dno-suppress-type-signatures #-}
22import qualified Array
33import Test.Tasty.Bench
4- import qualified Fleet.Array as DiffArray
5- import Fleet.Array (DiffArray )
4+ import qualified Fleet.Array as Fleet
65import Quicksort (quicksort )
76import qualified QuicksortA
87
98class Indexable a where
109 (!) :: a -> Int -> Int
1110
11+ instance Indexable (Fleet. Array Int ) where
12+ (!) = (Fleet. !)
1213instance Indexable (Array. Array Int ) where
1314 (!) = (Array. !)
14- instance Indexable (DiffArray Int ) where
15- (!) = (DiffArray. !)
1615
1716loop :: Indexable a => a -> Int -> Int -> Int
1817loop _ 1 s = s
@@ -23,7 +22,7 @@ fooA :: Array.Array Int -> Int
2322fooA arr = loop arr (arr ! 1 ) 0
2423
2524{-# NOINLINE fooDA #-}
26- fooDA :: DiffArray Int -> Int
25+ fooDA :: Fleet. Array Int -> Int
2726fooDA arr = loop arr (arr ! 1 ) 0
2827
2928list :: [Int ]
@@ -33,31 +32,31 @@ main :: IO ()
3332main = do
3433 let
3534 arrA = Array. fromList list
36- arrDA = DiffArray . fromList list
35+ arrDA = Fleet . fromList list
3736 print $ fooA arrA
3837 print $ fooDA arrDA
3938 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
5150 ! marr <- QuicksortA. fromList list
5251 defaultMain
5352 [ 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
6059 , 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
6362 ]
0 commit comments