list:append / 2与erlang:'++'/ 2,追加到列表末尾与追加到其头部

时间:2011-08-30 10:13:27

标签: list erlang append

在两对给定的比较中,对于Erlang中的系统资源,哪一对(每对)更昂贵:

Qn1: lists:append(L1,L2)erlang:'++'(L1,L2)的对比 Qn2 写一个列表的头部,说:[NewHead|List],而不是写入列表的末尾:List ++ [NewValue]

我问过这个问题,因为我的程序中有很多部分都是读写列表。我需要决定是否要写入名单的头部或写到他们的目的,反之亦然。

1 个答案:

答案 0 :(得分:18)

1:它们功能相同。 'append'是'++'的别名(反之亦然)。另请参阅Erlang ++ operator. Syntactic sugar, or separate operation?

2:不要通过追加来逐步建立一个列表。追加一次是好的,但是在循环中追加会给你二次行为。即,AddedStuff ++ Accumulator是可以的(即使在循环中),因为你正在“向左”增长,但是Accumulator ++ AddedStuff在一个循环中(向右增长)真的很糟糕。如果订单很重要,那么向左增长然后反转或排序会更好。