当前位置:  开发笔记 > 编程语言 > 正文

GHC中模式匹配的表现

如何解决《GHC中模式匹配的表现》经验,为你挑选了1个好方法。

我正在为我创建的数据类型编写一个"附加"函数(基本上处理"流").但是,这种数据类型有12种不同的构造函数,处理不同类型的"流",例如,无限,空,固定长度,可变长度,已经附加等.

输入类型和输出类型之间的逻辑有点复杂但并非如此令人难以置信.

我考虑过两种方法:

    与广泛的类别匹配(可能通过包装在更简单的代理类型中),然后在这些匹配内匹配OR

    只是模式匹配144个案例(12*12).对于特定的组合,我可以通过通配符匹配将此值减少到100,但这就是它.

我知道第二种方法更难以维护,但忽视这一点,GHC会发现第二种方法更容易优化吗?如果它可以使用简单的跳转表(或者可能是两个跳转表)进行第二种方法,我怀疑它会更快.但是,如果它进行线性检查,它将会慢得多.

GHC是否将模式匹配(甚至非常大的匹配)优化为恒定时间跳转表?



1> dfeuer..:

是的,GHC优化了这种模式匹配.前七个(我认为)构造函数通过指针标记得到优化.我相信其余的将由跳桌来处理.但144个案例听起来很难维护,你必须注意代码大小.你真的需要所有这些案件吗?

推荐阅读
低调pasta_730
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有