GHC:Haskell字符串优化

时间:2012-07-31 03:40:11

标签: list haskell ghc

我知道Data.TextString = [Char]更有效地存储字符串数据。但是,我在库中看到的许多函数似乎都希望传递给它们StringChar的链接列表似乎效率很低,因为指针会占用比字符串本身更多的空间。除了列表融合(可能并不总是可能)之外,GHC对[Char]的存储有什么优化,它是否将类似的原则应用于其他列表?

3 个答案:

答案 0 :(得分:5)

所有基本库函数使用String而不是更高效类型的原因是Text所需的 text 库不是基本库的一部分。但是,文本库提供了各种输入/输出功能的变体。您可以在Data.Text.IO中找到它们。

另请注意,对于高效的I / O,您通常会使用其中一个现代抽象,例如管道,迭代或管道。

答案 1 :(得分:2)

在GHC下,String在平均情况下使用5 words per code point。但是,运行时预分配ASCII范围内的字符可以减轻这种情况。

答案 2 :(得分:-1)

Here就是答案。

  

Bytestring 类似于列表,只有每个元素的大小为一个字节(或8位)。他们处理懒惰的方式也不同。