erlang的官方文档部分翻译

本文揭示了Erlang的八个性能优化要点,包括复杂函数Funs与apply/3的速度对比、列表解析的效率、尾递归的优势、'++'运算的性能问题、字符串处理、Dets文件整理、BEAM虚拟机的特性以及未使用变量的优化。通过对这些细节的理解,开发者可以更好地优化Erlang代码的运行效率。
摘要由CSDN通过智能技术生成

erlang的八个秘密

1.        复杂函数Funs较慢

funs的速度比apply/3要慢,它从实现机制上利用了编译器的小伎俩,速度上比apply/3使用元组和大量精巧设计来的慢。

2.        列表解析比较慢

在以前列表解析是使用funs的方式实现的,因此它的速度是非常慢的。

但现在使用递归函数实现,当然,采用尾递归函数,在末尾多加一个列表反转仍然要快很多。这在下一个秘密中会讲到。

3.        尾递归函数比普通递归函数要快得多

普通递归函数在堆栈上留下了废旧对象的指针,垃圾回收器需要将所有的废旧对象拷贝一份。而在尾递归函数中,原地开栈意味着废旧对象直接被弃掉了

 

以上是R7B 之前的版本的情况,在R7B 版本中,编译器运行一段代码,用空列表覆盖了指向废旧对象的指针,因此垃圾回收器不用将废旧数据一直保留了。

即便采用了上述优化,采用尾递归仍然要比普通递归函数快得多,为什么呢?

 

这就与递归函数被调用时占据了多少字节的堆栈有关系。在绝大多数情况下,一个普通递归函数会比一个尾递归函数开辟更多字节的堆栈,正因

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值