2

我编写了一个程序来使用Repa处理大量数据样本。性能是该程序的关键。大部分操作需要多维数组上的并行映射/折叠,Repa非常适合此操作。但是,我的程序中仍有一部分只使用一维数组并且不需要并行性(即并行性的开销会损害性能)。其中一些操作需要带有自定义累加器的takeor s 之类的函数,而这些函数不支持。所以我自己通过遍历数组来编写这些操作。foldRepaRepa

我是否最好使用Vector而不是重写这些操作Repa?它们会带来更好的性能吗?

我在某处读到一维Repa数组被实现为Vectors 'under the hood' 所以我怀疑这会带来Vector更好的性能。另一方面,Vector确实有一些不错的内置函数,我可以使用它们而不是自己编写它们。

4

1 回答 1

2

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

于 2017-01-26T10:53:08.923 回答