Data.Array的速度有多快?

时间:2011-09-02 21:19:06

标签: arrays haskell complexity-theory

Data.Array的{​​{3}}读取:

  

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

我想知道(!)(//)的速度有多快。我可以期待O(1)的复杂性,就像我从他们的命令式对手那里得到的那样吗?

1 个答案:

答案 0 :(得分:5)

一般来说,是的,你应该可以期待来自!的O(1),虽然我不确定标准是否保证了这一点。

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

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