模块Data.Text.Lazy.Builder (文本包)和模块Text.Builder (文本生成器)之间有什么区别?我是说目标,效率和可能性?
发布于 2018-12-01 21:31:42
我没有使用text-builder,但是它声称是一个“高效的严格文本构建器”(强调我的),而标准的Data.Text.Lazy.Builder构建了懒惰的Text (本质上是UTF-16数组块的链接列表)。这两个库(Builder的思想)的目的是在您通过追加来积累字符串时避免大量的分配和复制。
在我看来,text-builder库主要是将自己限制为静态已知大小的类型。我认为它存在的原因是,这可能比text中的普通构建器更有效;在run中,您只需分配一次,然后将其序列化到数组中,在Data.Text.Lazy.Builder中,您可能需要在执行过程中增长或分配新的块。如果您真正需要的是一个严格的Text,那么无论如何您可能需要支付复制所有这些块的费用(我也不确定,这可能还需要额外复制中间严格的Text )。
但这主要是猜测。也许尼基塔·沃尔科夫会插话。
https://stackoverflow.com/questions/53573086
复制相似问题