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%)。因此,如果要对线上运行着的代码进行