如何解决您如何编写在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
)的来源。伴随着这些,值得一看的是米兰在他的集装箱改进方面的论文。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。