Skip to content

Commit 79bbdb4

Browse files
author
Jaro Reinders
committed
Fix bench
1 parent f1e146f commit 79bbdb4

File tree

2 files changed

+28
-29
lines changed

2 files changed

+28
-29
lines changed

bench/Bench.hs

Lines changed: 24 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,17 @@
11
{-# OPTIONS_GHC -ddump-simpl -ddump-to-file -dsuppress-all -dno-typeable-binds -dno-suppress-type-signatures #-}
22
import qualified Array
33
import Test.Tasty.Bench
4-
import qualified Fleet.Array as DiffArray
5-
import Fleet.Array (DiffArray)
4+
import qualified Fleet.Array as Fleet
65
import Quicksort (quicksort)
76
import qualified QuicksortA
87

98
class Indexable a where
109
(!) :: a -> Int -> Int
1110

11+
instance Indexable (Fleet.Array Int) where
12+
(!) = (Fleet.!)
1213
instance Indexable (Array.Array Int) where
1314
(!) = (Array.!)
14-
instance Indexable (DiffArray Int) where
15-
(!) = (DiffArray.!)
1615

1716
loop :: Indexable a => a -> Int -> Int -> Int
1817
loop _ 1 s = s
@@ -23,7 +22,7 @@ fooA :: Array.Array Int -> Int
2322
fooA arr = loop arr (arr ! 1) 0
2423

2524
{-# NOINLINE fooDA #-}
26-
fooDA :: DiffArray Int -> Int
25+
fooDA :: Fleet.Array Int -> Int
2726
fooDA arr = loop arr (arr ! 1) 0
2827

2928
list :: [Int]
@@ -33,31 +32,31 @@ main :: IO ()
3332
main = 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
]

bench/Quicksort.hs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@ module Quicksort (quicksort) where
44
import Fleet.Array
55
import Data.Tuple (Solo (..))
66

7-
-- swap :: Int -> Int -> DiffArray a -> DiffArray a
7+
-- swap :: Int -> Int -> Array a -> Array a
88
-- swap !i !j !xs = set i (xs ! j) (set j (xs ! i) xs)
99

10-
-- swap :: Int -> Int -> DiffArray a -> DiffArray a
10+
-- swap :: Int -> Int -> Array a -> Array a
1111
-- swap !i !j !xs =
1212
-- let
1313
-- -- using this strict matching on MkSolo we
@@ -19,7 +19,7 @@ import Data.Tuple (Solo (..))
1919
-- in set i y (set j x xs)
2020

2121
{-# INLINEABLE quicksort #-}
22-
quicksort :: Ord a => Int -> Int -> DiffArray a -> DiffArray a
22+
quicksort :: Ord a => Int -> Int -> Array a -> Array a
2323
quicksort !l !r !xs
2424
| r - l <= 1 = xs
2525
| otherwise =
@@ -28,7 +28,7 @@ quicksort !l !r !xs
2828
(xs, m) -> quicksort l m (quicksort (m + 1) r (swap (r - 1) m xs))
2929

3030
{-# INLINEABLE partition #-}
31-
partition :: Ord a => Int -> Int -> DiffArray a -> a -> (DiffArray a, Int)
31+
partition :: Ord a => Int -> Int -> Array a -> a -> (Array a, Int)
3232
partition l r xs x = go xs l l where
3333
go !xs !m !i
3434
| i == r = (xs, m)

0 commit comments

Comments
 (0)