[erlang-questions] Circular list
Colm Dougan
colm.dougan@REDACTED
Fri Aug 22 15:34:24 CEST 2008
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
More information about the erlang-questions
mailing list