【问题标题】:How use DiffArray in Haskell? How make more strict this code?如何在 Haskell 中使用 DiffArray?如何使这个代码更严格?
【发布时间】:2012-12-29 22:35:32
【问题描述】:

我尝试使用 Data.Array code 没关系,但速度很慢。

然后使用 Data.Array.Diff
code

找不到模块“Data.Array.Diff”

如果我使用 Data.Array.Unboxed,比没有找到 DiffArray 或 DiffUArray 构造函数。

如何使用 DiffArray 和 DiffUArray?

DiffUArray 比 DiffArray 更优化性能?

如何让代码不那么懒惰(更严格)?

我不想使用 IOArray 或 STArray,因为学习。如果存在的话,我应该只使用 IArray 和其他一些非 monadic 数组。

【问题讨论】:

    标签: arrays haskell module strict


    【解决方案1】:

    vector怎么样?

    DiffArray 已过时。

    【讨论】:

    • Haskell 是否从 C++ 中获得了容器 std::deque 的类似物,具有索引访问权限,并以算法复杂度 O(1) 左右增长并由块组成?
    • 为什么 DiffArray 已过时? DiffArray 比简单的不可变数组更慢?
    • @EricRougier 实际上,在大多数情况下,DiffArray 实现比使用普通的不可变数组要慢。如果你想要速度,你可以使用可变数组(或可变的Vectors,原则上没有速度差异,只是vector带有一个融合框架,可以减轻你编写快速代码的一些负担)。如果您不想要可变结构,vector 的融合框架使使用不可变 vectors 编写快速代码比使用不可变 Arrays 更容易。
    • 如果你想要一个双端队列,Data.Sequence 可能是你最好的选择。
    • @LouisWasserman:它使用 O(log(min(i,n-i))) 而不是 O(1) 进行索引访问。索引访问性能对我来说非常重要
    猜你喜欢
    • 2011-08-25
    • 1970-01-01
    • 1970-01-01
    • 2015-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-13
    相关资源
    最近更新 更多