- Changed
Board
representation from list of lists of cells to a flat 16-element unboxed vector - Specializing
transpose
fromUnbox a => VUM.MVector s a -> ST s ()
toVUM.MVector s Cell -> ST s ()
gave us a big perf improvement - Swapping
(,)
forData.Strict.Tuple.Pair
inEval.monotonicity
shaved off 15~20% - Swapping
(,)
forData.Strict.Tuple.Pair
inStateTree
shaved off 5~10%
- Specializing
sliceRowsM
andfindIndex
- Using
Vector.Mutable.Unboxed.unsafeWrite
,unsafeRead
,unsafeSlice
,unsafeSwap
- Swapping
Data.Maybe
forData.Strict.Maybe
-fspecialise-aggressively