[erlang-questions] Circular list
Hynek Vychodil
vychodil.hynek@REDACTED
Fri Aug 22 15:44:31 CEST 2008
Look at queue module. Copy is performed, but only once if you work only one
way.
On Fri, Aug 22, 2008 at 3:34 PM, Colm Dougan <colm.dougan@REDACTED> wrote:
> Hi,
>
> If I have a list of a fixed size (say 10,000 elements). What is the
> most efficient way to add a new item to the list and force out the old
> first element. By most efficient I mostly mean without having to copy
> the entire list each time, if that is even possible.
>
> I'm currently doing a double reverse trick, e.g. :
>
> Eshell V5.6.3 (abort with ^G)
> 1> L1 = ["A", "B", "C", "D", "E"].
> ["A","B","C","D","E"]
> 2> [_ | L2] = L1.
> ["A","B","C","D","E"]
> 3> lists:reverse(["F" | lists:reverse(L2)]).
> ["B","C","D","E","F"]
>
> Is there a more efficient way? I tried a benchmark and the reverse
> seems more costly than I expected.
>
> Colm
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED
> http://www.erlang.org/mailman/listinfo/erlang-questions
>
--
--Hynek (Pichi) Vychodil
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20080822/553a462c/attachment.htm>
More information about the erlang-questions
mailing list