Ticket #2727: SlowDiffArray.hs

File SlowDiffArray.hs, 539 bytes (added by claus, 5 years ago)

example of DiffArray? slower than Array in single-threaded use

Line 
1{-# OPTIONS_GHC -O2 -cpp #-}
2
3import Data.Array.IArray
4import qualified Data.Array.Diff as DA
5import qualified Data.Array as A
6
7maxPos   = 1000
8maxLoops = 10000
9
10loop arr i c | i>maxPos  = arr // [(maxPos,c)]
11             | otherwise = (loop arr (i+1)) $! (arr!i)+c
12
13loop2 i arr | i>maxLoops = arr
14            | otherwise  = loop2 (i+1) $ loop arr 1 0
15
16main = print $ loop2 1 arr ! maxPos
17
18#ifdef UseDiff
19arr :: DA.DiffArray Int Int
20#else
21arr :: A.Array Int Int
22#endif
23arr = array (1,maxPos) [(i,1)|i<-[1..maxPos]]