我一直在研究绳索作为Data.Text的替代品,我喜欢我所看到的以至于我现在不得不问这个问题....有没有哪种情况下Data.Text会是更好的选择?
以下是引导我的要点(如果我错在任何这些上,请纠正我) -
单个叶节点绳内部是(几乎)相同的东西作为一个Data.Text对象.单节点绳索与文本的开销很小,只是用于区分分支或叶子的单个位标志.如果你真的想要Data.Text,只需使用未分裂的绳索.
复杂性在绳索插入/删除(log(N)vs N)中普遍相等或更好,通过索引得到(log(N)/ N取决于树的深度对N).
我已经读过绳索的成功证明是c中的混合包,因为线程安全代码损害了性能.然而,这些问题在不可变的Haskell中无关紧要.事实上,在我看来,因此,Haskell和绳索是彼此的理想选择.
再次,就像我以前的类似问题一样,我对结构的抽象质量更感兴趣,而不是当前的情况(库使用,代码的强化程度等).如果你明天重写了Haskell库,你会用Data.Rope替换Data.Text吗?
"打包阵列的手指树"似乎是一个很好的表示选择,虽然我会担心不断的开销.使用积极的流式激情和其他一些短字符串优化的努力可能会解决这个问题,但Data.Rope缺乏这些功能.现在Data.Rope不是真正的Data.Text替代品.
Data.Text 它背后有巨大的工程努力,经过高度优化,众所周知且文档齐全| 归档时间: |
|
| 查看次数: |
377 次 |
| 最近记录: |