
Jan Kybic
I have recently coded in Haskell a little program which evaluates a function given as a series of matrix products. Matrices and vectors are represented as type X. Surprisingly, compiled with 'ghc -O2' (vers 5.02.2) the program runs faster with X=Array than with X=UArray Double. I was quite puzzled by this result, I suppose that maybe the laziness helps to avoid memory allocation or something. Is that possible?
This should only have an effect if parts of the resulting matrices were not used to compute the final result. Given that the interface to H98 arrays heavily relies on lists for generating arrays and extracting results, the list computations can easily dominate the actual array computations. If that happens, it often depends on how much deforestation[1] GHC can perform. Cheers, Manuel [1] Static removal of intermediate data structures