Skip to content

Commit f41659b

Browse files
committed
add Acc benchmarks
I know Nikita Volkov as a Haskeller with a lot of smart logical solutions to probems. Acc is a tree-like structure which tree balances to the operation applied, so when a lot of same operations applied to the structure - data tree is kept optimized for that operation. It is designed to be a builder-phase data type. Therefore it lacks a lot of abilities. Upstream thread with the author is: nikita-volkov/acc#1
1 parent 87aa7e3 commit f41659b

File tree

2 files changed

+14
-0
lines changed

2 files changed

+14
-0
lines changed

Time.hs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ import qualified Data.Vector.Unboxed as UV
1818
import qualified Data.Vector.Storable as SV
1919
import qualified Data.Massiv.Array as M
2020
import qualified Data.RRBVector as RRB
21+
import qualified Acc
22+
import qualified GHC.Exts
2123
import System.Directory
2224
import System.Random
2325

@@ -49,6 +51,7 @@ main = do
4951
, Conser "Data.Vector.Storable" sampleSVVector SV.cons
5052
, Conser "Data.Sequence" sampleSeq (S.<|)
5153
, Conser "Data.RRBVector" sampleRRB (RRB.<|)
54+
, Conser "Data.Acc" sampleAcc Acc.cons
5255
])
5356
, bgroup
5457
"Indexing"
@@ -72,6 +75,7 @@ main = do
7275
, Append "Data.Vector.Storable" sampleSVVector (SV.++) id
7376
, Append "Data.Sequence" sampleSeq (S.><) id
7477
, Append "Data.RRBVector" sampleRRB (RRB.><) id
78+
, Append "Data.Acc" sampleAcc (<>) id
7579
])
7680
, bgroup
7781
"Length"
@@ -84,6 +88,7 @@ main = do
8488
, Length "Data.Sequence" sampleSeq S.length
8589
, Length "Data.Massiv.Array" sampleMassivUArray M.elemsCount
8690
, Length "Data.RRBVector" sampleRRB length
91+
, Length "Data.Acc" sampleAcc length
8792
])
8893
, bgroup
8994
"Stable Sort"
@@ -116,6 +121,7 @@ main = do
116121
, Min "Data.Sequence" randomSampleSeq minimum
117122
, Min "Data.Massiv.Array" randomSampleMassivUArray M.minimum'
118123
, Min "Data.RRBVector" randomSampleRRB minimum
124+
, Min "Data.Acc" randomSampleAcc minimum
119125
])
120126
, bgroup
121127
"Max"
@@ -128,6 +134,7 @@ main = do
128134
, Max "Data.Sequence" randomSampleSeq maximum
129135
, Max "Data.Massiv.Array" randomSampleMassivUArray M.maximum'
130136
, Max "Data.RRBVector" randomSampleRRB maximum
137+
, Max "Data.Acc" randomSampleAcc maximum
131138
])
132139
, bgroup
133140
"Filter Element"
@@ -279,6 +286,9 @@ randomSampleMassivUArray i = evaluate $ force ma where
279286
randomSampleRRB :: Int -> IO (RRB.Vector Int)
280287
randomSampleRRB i = evaluate $ force $ RRB.fromList (take i (randoms (mkStdGen 0)))
281288

289+
randomSampleAcc :: Int -> IO (Acc.Acc Int)
290+
randomSampleAcc i = evaluate $ force $ GHC.Exts.fromList (take i (randoms (mkStdGen 0)))
291+
282292
sampleList :: Int -> IO [Int]
283293
sampleList i = evaluate $ force [1..i]
284294

@@ -303,3 +313,6 @@ sampleMassivUArray i = evaluate $ force ma where
303313

304314
sampleRRB :: Int -> IO (RRB.Vector Int)
305315
sampleRRB i = evaluate $ force $ RRB.fromList [1..i]
316+
317+
sampleAcc :: Int -> IO (Acc.Acc Int)
318+
sampleAcc i = evaluate $ force $ GHC.Exts.fromList [1..i]

bench.cabal

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ benchmark time
2323
, massiv
2424
, rrb-vector
2525
, dlist
26+
, acc
2627

2728
executable report
2829
default-language: Haskell2010

0 commit comments

Comments
 (0)