首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >frege纯函数和性能优化

frege纯函数和性能优化
EN

Stack Overflow用户
提问于 2015-11-11 05:33:15
回答 1查看 117关注 0票数 1

我对haskell纯函数的理解是,它们支持缓存等性能优化(因为纯函数每次都为相同的输入返回相同的结果)。frege的纯函数进行了哪些性能优化?

EN

回答 1

Stack Overflow用户

发布于 2015-11-11 06:27:08

当然不是缓存。我不知道有哪种语言会自动实现这一点,而且有很好的理由。

我们目前所做的是内联、beta缩减和消除某些值构造和解构。例如,当您拥有以下内容时:

代码语言:javascript
复制
case (\a -> (Just a, Just a)) 42 of (Just b, Just c) -> [c,b]

编译器只是生成代码来构造列表

代码语言:javascript
复制
[ 42, 42 ]

乍一看,这看起来不是很有用,因为肯定没有人会写这样臃肿的代码。但是,考虑到lambda表达式可能是内联某些其他函数的结果。事实上,在像一元代码这样的高度抽象的代码中,(>>=)运算符的扩展通常会导致代码可以通过这种方式进行优化。

虽然内联和beta缩减在某些情况下是好的,但必须注意不要过度使用,以免代码膨胀。特别是在JVM环境中,拥有庞大的函数(即方法)是一个缺点。JIT能够并将为小方法做很好的工作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33640017

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档