您如何编写在GHC中尽可能高效的数据结构?

问题描述

|                                                                                                                   关闭。这个问题需要更加集中。它当前不接受答案。                                                      

解决方法

        那是个大话题!大部分内容已在其他地方进行了解释,因此我不会在此处尝试撰写本书的章节。代替: 《真实世界》 Haskell,第25章,“性能”-讨论性能分析,简单的专业化和拆包,阅读Core和一些优化。 约翰·蒂贝尔(Johan Tibell)在这个话题上写了很多: 计算数据结构的大小 常见数据类型的内存占用量 通过哈希更快的持久化结构 懒惰的推理 还有一些来自这里的东西: 阅读GHC核心 GHC如何进行优化 性能分析 调整GC设置 总体改进 有关开箱的更多信息 拆箱与严格 还有其他一些事情: 代码和数据专业介绍 代码改进标志     ,        
applicativeTree
非常漂亮,但主要是与手指树特别相关的方式,而FingerTrees本身也是一个漂亮的数据结构。我们对cstheory的复杂性进行了一些讨论。请注意,将“ 0”写为可在任何应用程序上使用。碰巧的是,当专门针对“ 2”时,它可以以其他方式无法共享的节点。您可以内联
Id
方法并查看会发生什么,从而自己完成专业化工作。请注意,此专业化仅在一个地方使用-O(log n)
replicate
函数。更通用的功能巧妙地专用于恒定情况,这是非常聪明的代码重用点,但这实际上就是全部。 我认为,总体而言,“ 5”教的是关于设计持久性数据结构的知识,而不是关于寻求性能的所有窍门。 Don's的建议当然很棒。我还只是浏览真正规范的库(尤其是s6ѭ,
IntMap
Set
IntSet
)的来源。伴随着这些,值得一看的是米兰在他的集装箱改进方面的论文。     

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...