3

takeWhile 为例。它在内部使用span

这是否意味着它只引用输入字节串?可能不是,如果是这样,有没有办法做到这一点?

激励用例是一个大(> 2gb)文件,我想将其映射到内存中并提取指向映射内存的字节串。

4

1 回答 1

3

是的,正如您在文档中看到的那样,对 s 的所有类似子字符串的操作ByteString都是O(1) ,并制作具有不同偏移/长度的浅拷贝。如果您不需要它,请使用获取解析结果的完整副本,以便对原始的大字符串进行垃圾收集。copy

此外,考虑和Lazy的化身,在连续解析大块的情况下,它可能更优化。mmapAttoparsec

于 2014-03-13T12:46:30.020 回答