Erlang代码性能分析

本文探讨了Erlang中几个关键的内置函数的性能问题,如++运算符、- -运算符、list_to_atom/1、length/1和size/1,并提供了优化建议。同时介绍了性能分析工具cprof和fprof的使用,cprof适合在线分析,而fprof提供详细执行时间信息但开销较大。
摘要由CSDN通过智能技术生成

0、内置函数和运算符的性能
1)、++运算符
不要放任列表自右侧增长!此外还应该注意++运算符只是lists:append/2的一个别名,这个问题对该函数同样适用。
2)、- -运算符
- -运算符是lists:substract/2 的别名。这个运算符不常用:它的作用是从左侧列表中删除右侧列表中的元素。
如果元素顺序不是很重要,那么更为高效的方法是先排序,再调用ordersets:substract/2 。
3)、list _to_atom/1
切记原子无法垃圾回收,务必小心使用这个函数。在某些场合使用list _to_existing_atom/1更合适。
4)、length/1
为了计算元素数目,length/1必须遍历整张列表,在特殊场合可以使用模式匹配来代替此函数。
5)、size/1
length/1仅适用于列表,size/1同时适用于元组和二进制串,不适用于列表。
二者的主要区别在于size/1是常数操作,无需遍历所有数据元素。size/1用于元组返回元组的元素个数,用于二进制串返回的是字节数。
推荐使用tuple_size (T)获取元组的元素数,
用byte_size(B)或bit_szie(B)获取二进制串或位串中的字节数或比特位数。

1、用cprof计算调用次数

cprof用于记录函数调用次数。输出信息不如fprof丰富,相对于fprof,主要优势在于对运行时系统的影响较小(被分析的代码大约会慢10%)。因此,如果要对线上运行着的代码进行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值