相关疑难解决方法(0)

Haskell:列表,数组,向量,序列

我正在学习Haskell,并阅读了几篇关于Haskell列表和(插入语言)数组的性能差异的文章.

作为一个学习者,我显然只是在不考虑性能差异的情况下使用列表.我最近开始调查,发现Haskell中有许多数据结构库.

有人可以解释一下列表,数组,向量,序列之间的区别,而不是深入研究数据结构的计算机科学理论吗?

此外,是否有一些常见的模式,您将使用一个数据结构而不是另一个?

是否有任何其他形式的数据结构我缺少并可能有用?

haskell

221
推荐指数
1
解决办法
3万
查看次数

在Haskell中将10 GB向量保存到磁盘的最佳方法

我有一个10GB Data.Vector.Unboxed向量,我想有效地保存到磁盘.什么是最好,最有效的方式?我打算从内存映射文件中读取它.

我已经看过这个包这个包但只适用于Storable,但我需要保持unboxed.

我在考虑转换到列表,但我认为这不是很理想.

haskell

12
推荐指数
2
解决办法
368
查看次数

可存储和未装箱的矢量之间的差异

所以...我已经使用了未装箱的载体(来自vector包装),现在最好不要考虑太多.vector-th-unbox为他们创建实例变得轻而易举,为什么不呢.

现在我遇到了一个实例,我无法自动派生那些实例,一个带有幻像类型参数的数据类型(如Vector (s :: Nat) a,s编码长度).

这让我想到了StorableUnboxed矢量之间的差异.我自己想出的事情:

  • Unboxed 将元组存储为单独的向量,从而导致更好的高速缓存局部性,而不需要在仅需要其中一个值时浪费带宽.
  • Storable仍将编译为简单(可能有效)的readArray#s,返回未装箱的值(通过阅读核心显而易见).
  • Storable允许直接指针访问,允许与外部代码的互操作性.Unboxed没有.
  • [编辑] Storable实例实际上是更容易用手比写Unbox(即VectorMVector)的.

仅仅这一点并没有让我明白为什么Unboxed即使存在,似乎也没什么好处.可能我错过了那里的东西?

haskell haskell-vector

9
推荐指数
1
解决办法
852
查看次数

标签 统计

haskell ×3

haskell-vector ×1