<div dir="ltr">Look at queue module. Copy is performed, but only once if you work only one way.<br><br><div class="gmail_quote">On Fri, Aug 22, 2008 at 3:34 PM, Colm Dougan <span dir="ltr"><<a href="mailto:colm.dougan@gmail.com">colm.dougan@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Hi,<br>
<br>
If I have a list of a fixed size (say 10,000 elements).  What is the<br>
most efficient way to add a new item to the list and force out the old<br>
first element.  By most efficient I mostly mean without having to copy<br>
the entire list each time, if that is even possible.<br>
<br>
I'm currently doing a double reverse trick, e.g. :<br>
<br>
Eshell V5.6.3  (abort with ^G)<br>
1> L1 = ["A", "B", "C", "D", "E"].<br>
["A","B","C","D","E"]<br>
2> [_ | L2] = L1.<br>
["A","B","C","D","E"]<br>
3> lists:reverse(["F" | lists:reverse(L2)]).<br>
["B","C","D","E","F"]<br>
<br>
Is there a more efficient way?  I tried a benchmark and the reverse<br>
seems more costly than I expected.<br>
<br>
Colm<br>
_______________________________________________<br>
erlang-questions mailing list<br>
<a href="mailto:erlang-questions@erlang.org">erlang-questions@erlang.org</a><br>
<a href="http://www.erlang.org/mailman/listinfo/erlang-questions" target="_blank">http://www.erlang.org/mailman/listinfo/erlang-questions</a><br>
</blockquote></div><br><br clear="all"><br>-- <br>--Hynek (Pichi) Vychodil<br>
</div>