DIM1修复阵列与矢量的性能

时间:2017-01-25 13:08:50

标签: haskell vector repa

我编写了一个使用Repa处理大量数据样本的程序。性能是此计划的关键。很大一部分操作需要在多维数组上进行并行映射/折叠,Repa非常适合这种情况。但是,我的程序中仍有一部分只使用一维数组,并且不需要并行性(即并行性开销会损害性能)。其中一些操作需要具有自定义累加器的takefold s等函数,Repa不支持。所以我通过迭代Repa数组来自己编写这些操作。

我最好使用Vector代替Repa来重写这些操作吗?它们会带来更好的表现吗?

我已经在某处读到了一维Repa数组被实现为Vector s'所以我怀疑Vector会带来更好的表现。另一方面,Vector确实有一些很好的内置函数,我可以使用它而不是自己编写它们。

1 个答案:

答案 0 :(得分:2)

我已使用Data.Vector.Unboxed实施了我的计划的某些部分,而不是使用一维Data.Array.Repa。除了一些小的改进,算法是相同的。对于顺序操作,Data.Vector.Unboxed似乎比一维Data.Array.Repa快4倍。