Data.Array的速度有多快?

R. *_*des 7 arrays complexity-theory haskell

文件Data.Array内容如下:

Haskell提供可索引数组,可以将其视为其域与整数的连续子集同构的函数.以这种方式限制的功能可以有效地实施; 特别是,程序员可能合理地期望快速访问组件.

我不知道能多快(!)(//)会.我可以从他们的命令式对手那里得到O(1)的复杂性吗?

alt*_*ive 5

一般来说,是的,你应该能够期待O(1),!尽管我不确定标准是否保证了这一点.

如果您想要更快的数组(通过使用流融合),您可能希望看到矢量包.它的设计也更好.

注意,这//可能是O(n),因为它必须遍历列表(就像命令式程序一样).如果您需要大量突变,可以使用MArrayMVector.

  • `(//)` 实际上在数组的 _size_ 中是线性的,因为它必须制作数组的新副本。然而,使用可变数组,我希望它在更新数量上是线性的。 (2认同)