在两对给定的比较中,对于Erlang中的系统资源,哪一对(每对)更昂贵:
Qn1: lists:append(L1,L2)
与erlang:'++'(L1,L2)
的对比
Qn2 写一个列表的头部,说:[NewHead|List]
,而不是写入列表的末尾:List ++ [NewValue]
我问过这个问题,因为我的程序中有很多部分都是读写列表。我需要决定是否要写入名单的头部或写到他们的目的,反之亦然。
答案 0 :(得分:18)
1:它们功能相同。 'append'是'++'的别名(反之亦然)。另请参阅Erlang ++ operator. Syntactic sugar, or separate operation?
2:不要通过追加来逐步建立一个列表。追加一次是好的,但是在循环中追加会给你二次行为。即,AddedStuff ++ Accumulator是可以的(即使在循环中),因为你正在“向左”增长,但是Accumulator ++ AddedStuff在一个循环中(向右增长)真的很糟糕。如果订单很重要,那么向左增长然后反转或排序会更好。