【问题标题】:lists:append/2 versus erlang:'++' /2, appending to end of list Versus appending to its Headlists:append/2 与 erlang:'++' /2,追加到列表末尾与追加到其头部
【发布时间】:2011-11-06 16:28:04
【问题描述】:

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

Qn1: lists:append(L1,L2) 与 erlang:'++'(L1,L2)
Qn2 写到列表的头部说:[NewHead|List] 与写到末尾列出:List ++ [NewValue]

我问这个是因为我的程序中有一个密集的部分将读取和写入列表。我需要决定是写给列表的头还是写到它们的末尾,反之亦然。

【问题讨论】:

    标签: list erlang append


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2019-05-30
      • 2018-03-15
      • 1970-01-01
      • 2013-10-26
      • 2013-04-26
      • 2017-02-14
      • 2018-06-12
      • 2014-06-02
      • 2020-09-24
      相关资源
      最近更新 更多