Erlang旧误区记录

以前的误区

误区1:Funs 运行速度很慢

fun曾经非常慢,比apply/3慢。最初,fun的实现仅仅是使用编译器的技巧、普通元组、apply/3以及大量的约定。

但那是历史。在R6B中,fun被赋予了自己的数据类型,并在R7B中进行了进一步的优化。现在,一个fun调用的消耗大约在普通的函数调用和apply/3之间。

误区2:列表解析很慢

列表解析过去是使用fun来实现的,在过去,fun确实很慢。

现在,编译器将列表推导式重写为普通的递归函数。使用尾部递归函数并在末尾执行反向操作会更快。还是吗?这就引出了一个误区:尾部递归功能比主体递归功能更快。

误区3:列表减法(“——”运算符)很慢

列表减法的运行时复杂度通常与操作数长度的乘积成正比,所以当两个列表都很长时,它的运行速度非常慢。

在OTP 22中,运行时复杂度是“n log n”,即使两个列表都很长,操作也会很快完成。事实上,它比常用的方法更快,使用更少的内存,在用ordersets减去它们之前将两个列表转换成有序集:subtract/2。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值